在Linux下用C语言编程

哈,上周有客人问我Linux下的进程创建是怎么回事,我就给他讲了这个例子。
在DOS时代,如果要编写驻留内存的程序,确实是一项技术活,需要大量的代码。
但Linux要简单得多。
您只需几行代码即可在后台运行该程序。

例如,您想开发一个后台程序,每次检查您的邮箱并在有新电子邮件时提醒您。
在Linux下实现这个功能非常方便。
你只需要使用shell命令加上&号,程序就会在后台运行。

让我向您展示一个简单的例子。
这是用C语言写的。
fork()用于创建子进程,然后子进程杀死父进程,这样信号处理就交由子进程来处理。

c 包含 包含 包括 包括 包括
定义 MAIL "/var/spool/mail/hoyt" 定义 SLEEP_TIME 1 0
main(void) { pid_t 孩子; if ((child = fork()) == -1 ) { printf("分叉错误: %s\n", strerror(errno)); 退出(1 ); } 否则如果(子> 0){ 而(1 ); //父进程什么都不做,直接进入死循环 } 否则{ if (kill(getppid(), SIGTERM) == -1 ) { printf("终止父错误:%s\n", strerror(errno)); 退出(1 ); } int mailfd; 而(1 ){ if ((mailfd = open(MAIL, O_RDONLY)) != -1 ) { fprintf(stderr, "\007 "); 关闭(mailfd); } 睡眠(SLEEP_TIME); } } }
这个程序其实很基础,你可以自己修改,比如让用户指定邮箱路径和睡眠时间。
这是一次绝佳的实践机会,加油,勇敢的探索者!
进程的概念在Linux下非常重要,很多程序都使用子进程。
创建子流程是每个程序员的基本技能之一。
我们就先学习到这里吧,以后还有更多有趣的事情等着我们。
无论如何,这取决于你,我还在考虑这个问题。

在Linux系统中,如何运行一个C语言程序?

兄弟,你会学C语言吗?我以前在这方面遇到过很多陷阱。
我记得有一次我想在我的旧 Linux 服务器上创建一个文件,但我使用了 touch 命令。
结果,文件名末尾添加了一个点。
当时我很困惑,以为自己做错了。

当时,我在终端中输入了touch test.c等一系列命令,屏幕上就出现了test.c文件。
我想这不是我想要的,我想要不带点的文件名。
后来我发现 touch 只是创建了一个空文件。
文件名后面的点实际上是文件扩展名,表明它是C语言源文件。

然后我用vim打开了该文件。
Vim 是一个很古老的文本编辑器,但是使用起来还是很方便的。
我记得进入 vim test.c 后屏幕就黑了。
就在那时我意识到要编写代码,我必须输入 i 才能进入插入模式。

写完代码后,我想编译它。
我当时使用的命令是gcc test.c,结果是a.out文件。
当时我以为是我的编译器有问题,后来发现Linux系统上默认编译生成的可执行文件就是这个名字。

然后从a.out文件所在目录运行该程序,并在终端中输入./a.out来运行该程序。
不过我觉得每次都叫a.out太不人性化了,所以我尝试使用gcc test.c -o test.out。
结果,创建了一个test.out文件并运行没有问题。

我花了大约两天的时间才弄清楚这个过程。
我当时真是不知所措。
不过现在想来,这个陷阱还是挺值得的。
最后,我学到了很多东西。
现在进展如何?您遇到问题了吗? 😄