我有一个作业是关于编写一个简单的 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/