1번
//uname함수이용해 myuname명령 만들기
#include <sys/utsname.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]){
if (argc!=2){
printf("error\n");
exit(1);
}
struct utsname uts;
int n;
if(uname(&uts)==-1){
perror("uname ");
exit(1);
}
while( (n=getopt(argc,argv,"asnrvm"))!=-1 ){
switch(n){
case 's':
printf("Osname : %s\n",uts.sysname);
break;
case 'n':
printf("Nodename : %s\n",uts.nodename);
break;
case 'r':
printf("release : %s\n",uts.release);
break;
case 'v':
printf("version : %s\n",uts.version);
break;
case 'm':
printf("machine : %s\n",uts.machine);
break;
case 'a':
printf("Osname : %s\n",uts.sysname);
printf("Nodename : %s\n",uts.nodename);
printf("release : %s\n",uts.release);
printf("version : %s\n",uts.version);
printf("machine : %s\n",uts.machine);
break;
default:
printf("wrong!\n");
break;
}
}
return 0;
}
2번
#include <sys/systeminfo.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc , char *argv[]){
if(argc!=2){
printf("error!\n");
exit(1);
}
char buf[257];
while( (n=getopt(argc,argv,"asnrvm"))!=-1 ){
switch(n){
case 's':
if(sysinfo(SI_SYSNAME,buf,257)==-1){
perror("sysinfo");
exit(1);
}
printf("Osname : %s\n",buf);
break;
case 'n':
if(sysinfo(SI_HOSTNAME,buf,257)==-1){
perror("sysinfo");
exit(1);
}
printf("Nodename : %s\n",buf);
break;
case 'r':
if(sysinfo(SI_ARCHITECTURE,buf,257)==-1){
perror("sysinfo");
exit(1);
}
printf("release : %s\n",buf);
break;
case 'v':
if(sysinfo(SI_VERSION,buf,257)==-1){
perror("sysinfo");
exit(1);
}
printf("version : %s\n",buf);
break;
case 'm':
if(sysinfo(SI_HW_SERIAL)==-1){
perror("sysinfo");
exit(1);
}
printf("machine : %s\n",buf);
break;
case 'a':
if(sysinfo(SI_SYSNAME,buf,257)==-1){
perror("sysinfo");
exit(1);
}
printf("Osname : %s\n",buf);
break;
default:
printf("wrong!\n");
break;
}
}
}
3번
//사용자가 입력한 로그인ID의 길이가 시스템의 최대 로그인명보다 긴지 확인
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int argc , char *argv[]){
if (argc!=2){
printf("error!\n");
exit(1);
}
int x=strlen(argv[1]);
printf("%d %ld\n",x,sysconf(_SC_LOGIN_NAME_MAX));
return 0;
}
4번