C语言用system()执行脚本:如何判断脚本执行成功

一、写博原由

        对system()函数的返回值仅判断 != 0 时为脚本执行失败,发现脚本有时没有执行,而程序却没报错,故出此博客。

        仅有代码,详细可man system。

二、正确判断返回值代码示例

2.1 脚本示例

cdk.sh

#!/bin/sh
echo "hello world"

2.2 C语言执行脚本示例

写法1:对情况详细判断

#include <stdio.h>
#include <stdlib.h>

int main()
{
    pid_t status;
    status = system("./cdk.sh");
    if (-1 == status)
    {
        printf("system error\n");
        return -1;
    }
    else
    {
        //正确退出
        if (WIFEXITED(status))
        {
            if (0 == WEXITSTATUS(status))//操作成功
            {
                printf(“run successfully.\n");
            }
            else
            {
                printf("run fail, exit code: [%d]\n", WEXITSTATUS(status));
                return -1;
            }
        }
        else
        {
            printf("exit status = [%d]\n", WEXITSTATUS(status));
            return -1;
        }
    }
    return 0;
}

 写法2:简易写法

#include <stdio.h>
#include <stdlib.h>

int main()
{
    pid_t status;
    status = system("./cdk.sh");
    if (-1 == status)
    {
        printf("system error\n");
        return -1;
    }

    //正确退出并操作成功
    if (WIFEXITED(status)
        && 0 == WEXITSTATUS(status))
    {
        printf("run successfully.\n");
    }
    else
    {
        printf("fail, exit code: [%d]\n", WEXITSTATUS(status));
        return -1;
    }
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言可以通过使用系统调用函数来执行远程服务器上的shell脚本。使用类似于system或popen函数可以在C语言程序中执行shell命令,并且可以搭配网络编程相关的套接字函数来实现与远程服务器的通信。 首先,需要在C程序中通过网络编程建立与远程服务器的连接。可以使用套接字函数如socket、connect来建立TCP或UDP连接,也可以使用SSL库函数来建立安全连接。通过这个连接,C程序可以向远程服务器发送命令。 然后,在C程序中使用system或popen函数来执行远程服务器上的shell脚本。这些函数可以接受shell命令作为参数,并且可以返回命令执行的结果。可以将需要执行的shell脚本作为参数传递给system或popen函数,然后获得执行结果。 最后,C程序可以根据执行结果进行相应的处理。可以根据执行结果来判断shell脚本是否成功执行,可以通过解析执行结果来获取所需的信息。然后,可以将执行结果返回给调用程序,或者根据需要进行进一步的处理和操作。 需要注意的是,在执行远程服务器上的shell脚本时,要确保对服务器的操作具有足够的权限,并且要谨慎处理来自远程服务器的输入,以防止安全问题的发生。 总之,通过使用系统调用函数和网络编程函数,C语言可以执行远程服务器上的shell脚本,并且可以获取执行结果进行相应的处理和操作。这种方式使得C程序能够与远程服务器进行交互,并且可以实现广告中所描述的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值