uname 打印系统信息
系统命令
$ uname
Linux
c 语言实现
#include <stdio.h>
#include <sys/utsname.h>
int main(int argc, char **argv)
{
struct utsname name;
if (uname(&name) < 0) {
perror("uname error");
return -1;
}
printf("%s\n%s\n%s\n%s\n%s\n",
name.sysname, name.nodename, name.release,
name.version, name.machine);
return 0;
}
whoami 打印用户名
系统命令
$ whoami
yourname
c 语言实现
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <pwd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
struct passwd *pw;
uid_t uid;
uid_t NO_UID = -1;
/* return the effective user ID of the calling process */
uid = geteuid();
if (uid == NO_UID && errno) {
perror("geteuid error");
return -1;
}
/* return the pointer of the password database that matches the uid */
pw = getpwuid(uid);
if (!pw) {
perror("getpwuid error");
return -1;
}
puts(pw->pw_name);
return 0;
}
echo 打印字符串
打印一个字符串列表到标准输出
系统命令
$ echo hello world!
hello world!
c 语言实现
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
int display_return = 1;
int do_v9 = 0;
argc--;
argv++;
while (argc > 0 && *argv[0] == '-') {
const char *temp = argv[0] + 1;
size_t i;
for (i = 0; temp[i]; ++i) {
switch (temp[i])
{
case 'e': case 'E': case 'n':
break;
default:
goto just_echo;
}
}
if (i == 0)
goto just_echo;
while(*temp)
switch (*temp++)
{
case 'e':
do_v9 = 1; /* 转义反斜杠 */
break;
case 'E': /* 不转义,默认情况*/
do_v9 = 0;
break;
case 'n':
display_return = 0;
break;
}
argc--;
argv++;
}
just_echo:
while(argc > 0) {
fputs(argv[0], stdout);
argc--;
argv++;
if (argc > 0)
putchar(' ');
}
if (display_return)
putchar('\n');
return 0;
}