小编wal*_*ker的帖子

如果需要在一行中如何触摸文件和mkdir

我需要触摸一个绝对文件名的文件,例如:/opt/test/test.txt,但我不确定系统上是否存在/ opt/test.所以代码应该类似于:

if (-d '/opt/test') {
    touch '/opt/test/test.txt';
} else {
    mkdir -p '/opt/test';
    touch '/opt/test/test.txt'
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来简化代码?我希望有一些系统命令可以只用一行完成相同的工作.

linux perl

15
推荐指数
6
解决办法
9227
查看次数

如何在 Linux 上守护 ac/c++ 程序

我根据http://linux.die.net/man/1/daemonize上的指南在 Linux 上编写了一个守护程序,但是该进程崩溃了几次,我找不到原因。它困扰了我几天。

今天我碰巧读了 W.Richard Stevens 所著的“UNIX 网络编程第 1 卷,第三版”。在本书中,它展示了一个编写守护程序的例子。阅读示例后,我意识到我的代码中缺少“与控制终端解除关联”。

现在我的问题是守护进程,为什么我们需要与控制终端解除关联?它与进程的崩溃有关吗?我的守护进程代码中是否缺少其他任何地方?

感谢您的回复。

这是我的代码:

bool daemonize()
{
    // http://linux.die.net/man/1/daemonize

    // change working dir to root
    (void) uchdir("/");

    // close stdin, stderr, stdout
    if (int fdnull = open("/dev/null", O_RDWR))
    {   
        dup2 (fdnull, STDIN_FILENO);
        dup2 (fdnull, STDOUT_FILENO);
        dup2 (fdnull, STDERR_FILENO);
        close(fdnull);
    }   
    else
    {   
        Log (ERR, "Failed to open /dev/null");
        return false;
    }   

    // detach from previous process group
    if (setsid () == -1)      /* request a new session (job control) …
Run Code Online (Sandbox Code Playgroud)

c++ linux daemon

1
推荐指数
1
解决办法
3万
查看次数

为什么我的程序无法使用mkdir系统调用设置0777模式?

我编写了以下代码,试图在Linux上创建一个0777模式的目录:

#include <sys/stat.h>
#include <sys/types.h>

int main () {

    mkdir("/tmp/mkdir-test", 0777);
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

但实际上,新目录有0755模式.

# stat /tmp/mkdir-test
  File: `/tmp/mkdir-test'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 802h/2050d  Inode: 1772304     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-09-27 20:23:54.000000000 -0700
Modify: 2016-09-27 20:23:54.000000000 -0700
Change: 2016-09-27 20:23:54.000000000 -0700
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?该程序如何创建一个真正的0777模式目录?

c linux

0
推荐指数
1
解决办法
684
查看次数

标签 统计

linux ×3

c ×1

c++ ×1

daemon ×1

perl ×1