C 检查系统功能的值

C 检查系统功能的值,c,return-value,C,Return Value,我想在c语言中找到mount命令传递到系统函数的返回值,我该怎么做 例如: printf("return val = %d",WEXITSTATUS(system(mount /dev/sda /media/mmcblk0))); 但每次它都给我255个值 有人能帮我找到mount命令的返回码吗 或任何其他解决方案 注意:我已经正确地包含了头文件 感谢*strong text*命令的返回值位于返回值的上8位。因此,将返回值按位移位8 #include <stdio.h> int

我想在c语言中找到mount命令传递到系统函数的返回值,我该怎么做

例如:

printf("return val = %d",WEXITSTATUS(system(mount /dev/sda /media/mmcblk0)));
但每次它都给我255个值

有人能帮我找到mount命令的返回码吗

或任何其他解决方案

注意:我已经正确地包含了头文件


感谢*strong text*

命令的返回值位于返回值的上8位。因此,将返回值按位移位8

#include <stdio.h>

int main() 
{
        int ret;
        ret = system("mount /dev/sda /media/mmcblk0");
        fprintf(stdout, "system ret:[%d]\n", (((ret)>>8) & 0xFF));
}
#包括
int main()
{
int ret;
ret=系统(“mount/dev/sda/media/mmcblk0”);
fprintf(stdout,“系统ret:[%d]\n”,((ret)>>8)和0xFF));
}
WEXITSTATUS
是一个宏,上面就是这样定义的。如果返回值为255,则可能是命令执行不正确。正如其他人提到的,这可能是因为权限


因此,如果
system()
返回-1,那么如果使用上面显示的位移位,则返回代码为255。

检查
system
是否返回-1错误。是否可以发布更完整的代码?此代码甚至无法编译。您是否使用
sudo
权限运行程序?我很确定,在大多数系统上,mount需要sudo。system的参数应该是
char*
,您需要在mount命令周围加引号。另外,一个最小的可编译示例也很有用。可能mount命令主要由root用户使用,所以请尝试以root用户身份运行程序。@user3360662:尝试更简单的方法。。像“cp test.txt/tmp”(当然,必须首先在运行程序的当前目录中有一个test.txt文件..如果errno为0,则它不是系统,是mount命令不起作用我在dm814X板上使用此命令,并且只有root用户权限,而且我在板上有交叉编译mount命令这是您硬件上的问题