unix c 开始了,天天点点滴滴

发布于 2022-10-15 08:11:35 字数 1189 浏览 41 评论 0

一:UNIX基础知识

标准输入输出:

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "unistd.h"
  4. #define BUFFSIZE 4096
  5. int
  6. main (int argc, char *argv[]) {
  7.       int       n;
  8.       char      buffer[BUFFSIZE];
  9.       while ((n = read(STDIN_FILENO, buffer, BUFFSIZE)) > 0)
  10.         if (write(STDOUT_FILENO, buffer, n) != n) {
  11.                 printf ("write error");
  12.                 exit(0);
  13.         }
  14.       if (n < 0) {
  15.         printf ("read error");
  16.         exit(0);
  17.       }
  18.       exit(0);
  19. }

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

吹梦到西洲 2022-10-22 08:11:35

ls命令:

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "dirent.h"
  4. void err_quit(char *str)
  5. {
  6.       printf ("%s", str);
  7. }
  8. int
  9. main (int argc, char **argv)
  10. {
  11.       DIR       *dp;
  12.       struct    dirent *dirp;
  13.       if (argc != 2)
  14.         err_quit ("usage: ls directory_name");
  15.       if ((dp = opendir (argv[1])) == NULL)
  16.         err_quit(argv[1]);
  17.       while ((dirp = readdir(dp)) != NULL)
  18.         printf ("%s\n", dirp->d_name);
  19.       closedir(dp);
  20.       exit(0);
  21. }

复制代码

看透却不说透 2022-10-22 08:11:35

获取当前程序的进程ID:

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. int
  4. main (int argc, char **argv)
  5. {
  6.         printf ("the program id is %d\n", getpid());
  7.         exit(0);
  8.         return 0;
  9. }

复制代码

这样的小城市 2022-10-22 08:11:35

创建子进程,执行简单命令:

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "unistd.h"
  4. #include "string.h"
  5. #include "sys/types.h"
  6. #include "sys/wait.h"
  7. #define MAXLINE  1024
  8. int
  9. main (int argc, char *argv[]) {
  10.       pid_t     pid;
  11.       char      buf[MAXLINE];
  12.       int       status;
  13.       while (fgets(buf, MAXLINE, stdin) != NULL) {
  14.         if (buf[strlen(buf) - 1] == '\n')
  15.                 buf[strlen(buf) - 1] = 0;
  16.         if ((pid = fork()) < 0) {
  17.                 printf ("fork error");
  18.                 exit(0);
  19.         }else if (pid == 0) {
  20.                 execlp (buf, buf, (char *)0);
  21.                 printf ("cound't execute %s\n", buf);
  22.                 exit(127);
  23.         }
  24.         if ((pid = waitpid (pid, &status, 0)) < 0)
  25.                 printf ("waitpid error");
  26.       }
  27.       exit(0);
  28. }

复制代码

蘑菇王子 2022-10-22 08:11:35

用户ID,组ID:

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "unistd.h"
  4. int
  5. main (int argc, char *argv[]) {
  6.            printf ("user id: %d, group id: %d", getuid(), getgid());
  7.            return 0;
  8. }

复制代码

往昔成烟 2022-10-22 08:11:35

LZ好样的,望坚持下去

撩发小公举 2022-10-22 08:11:35

这个可以写到博客系列里,免得帖子老被大家的回复打断,不好找主题~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文