多线程问题之一:修改全局变量

一、在多线程同时调用同一个函数,而该函数修改全局变量。

问题:我传了字符串进入check_path(),但是到了里面就为空""了,也有乱码的情况。
// FIXME: 会有创建失败的情况,发现后我命令行创建是没有问题的,不明原因。
// 后来发现有时候有乱码问题:
// path: “�.” 不存在!
// mkdir -p �.
// path: “�;|�}” 不存在!
// sh: 1: Syntax error: “|” unexpected
// “mkdir -p �;|�}” faild. system result:512
// 有时候有空字符问题:
// path: “” 不存在!
// mkdir: missing operand
// Try ‘mkdir --help’ for more information.
// "mkdir -p " faild. system result:256

代码:
// 判断路径是否存在并且是否有权限
bool check_path(const char* value) {
    lock_guard<mutex> lock(mut_cp);
    bool ret = true;
    if (access(value, F_OK) == -1) {
        printf("path: \"%s\" 不存在!\n", value);
        char mkdir_command[64];
        // FIXME: 会有创建失败的情况,发现后我命令行创建是没有问题的,不明原因。
        //   后来发现有时候有乱码问题:
        //      path: "�." 不存在!
        //      mkdir -p �.
        //      path: "�;|�}" 不存在!
        // 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值