c - 关于编写简单shell时的系统调用

标签 c shell unix

我有一个作业是关于编写一个简单的 Unix shell。

我的老师说我需要“检查每个系统调用的返回值”。以下是我对“检查每个系统调用的返回值”含义的理解。

例如,如果我的代码中有这一行:

int returnValue = kill (9999, SIGINT); 
/* 9999 is the pid of some process */

正如您所知,kill() 如果调用成功则返回 0,如果发生错误则返回 -1。 因此,如果 returnValue 实际上是“-1”,那么我应该打印出一些错误消息。

我是否正确理解“检查每个系统调用的返回值”的含义?我真的不这么认为,因为赋值描述只是说检查系统调用的返回值,但它没有说明错误消息的格式或当系统调用中发生某些错误时我应该做什么。谁能给我一些想法吗?

最佳答案

你的想法是对的。如果系统调用失败,您不希望它静静地过去。您需要做出的决定是错误是否严重到足以退出您自己的程序,或者您自己的程序是否可以有意义地继续(是否通过重试系统调用;采取其他操作,可能只是打印错误消息;或者忽略它)。

关于c - 关于编写简单shell时的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23685021/

相关文章:

bash - 如何捕获更改文件夹中文件的事件?

linux - 从 root 运行一个脚本,它调用 sudo oracle 中的另一个脚本。如何在不询问 oracle 密码的情况下做到这一点

c - 在 Objective-C 中前向声明具有已定义数组大小的函数

c - 输出:关系运算符和三元运算符?

linux - 如何更改 child 目录中的文件名

linux - 删除空格分隔路径的路径前缀

linux - Java 进程列表

在Linux中将物理地址转换为虚拟地址并读取其内容

c - gcc 和 arm-linux-gcc 之间的关系是什么

c - 如何理解这个用于 PowerPC stwbrx 的 GNU C 内联汇编宏