相关疑难解决方法(0)

150
推荐指数
5
解决办法
15万
查看次数

#!/ usr/bin/python3的目的

我已经注意到了几种脚本语言,但在这个例子中,我使用的是python.在许多教程中,他们将从#!/usr/bin/python3第一行开始.我不明白为什么我们有这个.

  • 不应该是操作系统知道它是一个python脚本(显然它已经安装,因为你正在引用它)
  • 如果用户使用的是非基于unix的操作系统,该怎么办?
  • 无论出于何种原因,该语言都安装在不同的文件夹中
  • 用户具有不同的版本.特别是当它不是完整版本号时(如Python3 vs Python32)

如果有的话,我可以看到这打破了python脚本,因为上面列出的原因.

python scripting

136
推荐指数
5
解决办法
16万
查看次数

Python模块os.chmod(file,664)不会改变对rw-rw-r--的权限,但是-w - wx ----

最近我使用的是Python模块os,当我试图更改文件的权限时,我没有得到预期的结果.例如,我打算将权限更改为rw-rw-r--,

os.chmod("/tmp/test_file", 664)
Run Code Online (Sandbox Code Playgroud)

所有权许可实际上是-w - wx ---(230)

--w--wx--- 1 ag ag 0 Mar 25 05:45 test_file
Run Code Online (Sandbox Code Playgroud)

但是,如果我在代码中将664更改为0664,结果就是我需要的,例如

os.chmod("/tmp/test_file", 0664)
Run Code Online (Sandbox Code Playgroud)

结果是:

-rw-rw-r-- 1 ag ag 0 Mar 25 05:55 test_file
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解释为什么领先的0对于获得正确的结果如此重要?

python permissions file chmod

99
推荐指数
6
解决办法
14万
查看次数

在Linux中创建守护进程

在Linux中我想添加一个无法停止的守护进程,它监视文件系统的变化.如果检测到任何更改,它应该将路径写入启动它的控制台加上换行符.

我已经有文件系统更改代码几乎准备好但我无法弄清楚如何创建一个守护进程.

我的代码来自:http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html

叉子后要做什么?

int main (int argc, char **argv) {

  pid_t pID = fork();
  if (pID == 0)  {              // child
          // Code only executed by child process    
      sIdentifier = "Child Process: ";
    }
    else if (pID < 0) {
        cerr << "Failed to fork" << endl;
        exit(1);
       // Throw exception
    }
    else                                   // parent
    {
      // Code only executed by parent process

      sIdentifier = "Parent Process:";
    }       

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c linux daemon

97
推荐指数
6
解决办法
18万
查看次数

"/ usr/bin/env node"在节点文件的开头究竟做了什么?

#!/usr/bin/env node在一些例子的开头看到了这一行,nodejs我用google搜索没有找到任何可以回答该行原因的话题.

单词的性质使搜索变得不那么容易.

我最近读了一些javascriptnodejs书,我不记得在其中任何一个看过它.

如果你想要一个例子,你可以看到RabbitMQ官方教程,他们几乎在所有的例子中都有它,这里有一个:

#!/usr/bin/env node

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, ch) {
    var ex = 'logs';
    var msg = process.argv.slice(2).join(' ') || 'Hello World!';

    ch.assertExchange(ex, 'fanout', {durable: false});
    ch.publish(ex, '', new Buffer(msg));
    console.log(" [x] Sent %s", msg);
  });

  setTimeout(function() { conn.close(); process.exit(0) }, 500);
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这条线的含义是什么?

如果我放入或删除此行有什么区别?在什么情况下我需要它?

shebang node.js

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

Ctrl-C如何终止子进程?

我试图了解CTRL+ 如何C终止子进程而不是父进程.我在一些脚本shell中看到了这种行为,比如bash你可以在哪里开始一个长时间运行的进程然后通过输入来终止它CTRL- C然后控制返回到shell.

你能解释它是如何工作的,特别是为什么父(shell)进程没有终止?

shell是否必须对CTRL+ C事件进行一些特殊处理,如果是,它究竟是做什么的?

bash shell process sh

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

C标准库与C POSIX库的区别

我对"C标准库"和"C POSIX库"感到有些困惑,因为我发现"C POSIX lib"中定义的许多头文件也是"C标准库"的一部分.

因此,我认为,"C标准库"是由ANSI C组织定义的库,并且在不同平台(Win32/Unix-like)上有不同的实现,而"C POSIX lib"只是"C标准"的实现lib"在类Unix操作系统上,对吗?

但是"C POSIX LIB"包含了一些头在"C标准库"未指定,如<sys/types.h>,<sys/wait.h><pthread.h>.

<pthread.h>为例,我相信它的"C标准库"对应的是<threads.h>,那么如果我想要写Linux上的多线程程序,这头文件,我应该包括,<pthread.h>还是<threads.h>

c posix standard-library

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

如何在Bash或UNIX shell中检查字符串中的第一个字符?

我在UNIX中编写脚本,我必须检查字符串中的第一个字符是否为"/",如果是,则为branch.

例如,我有一个字符串:

/some/directory/file
Run Code Online (Sandbox Code Playgroud)

我希望这返回1,并且:

server@10.200.200.20:/some/directory/file
Run Code Online (Sandbox Code Playgroud)

返回0.

unix string bash character exitstatus

62
推荐指数
4
解决办法
10万
查看次数

在C++中是否有64位整数的"标准"类似htonl的函数?

我正在研究memcache协议的实现,在某些点上,它使用64位整数值.这些值必须以"网络字节顺序"存储.

我希望有一些uint64_t htonll(uint64_t value)功能可以进行更改,但不幸的是,如果它存在,我找不到它.

所以我有1或2个问题:

  • 是否有任何可移植(Windows,Linux,AIX)标准功能?
  • 如果没有这样的功能,你会如何实现它?

我想到了一个基本的实现,但我不知道如何在编译时检查字节序以使代码可移植.所以你的帮助非常受欢迎;)

谢谢.


这是我写的最终解决方案,感谢Brian的解决方案.

uint64_t htonll(uint64_t value)
{
    // The answer is 42
    static const int num = 42;

    // Check the endianness
    if (*reinterpret_cast<const char*>(&num) == num)
    {
        const uint32_t high_part = htonl(static_cast<uint32_t>(value >> 32));
        const uint32_t low_part = htonl(static_cast<uint32_t>(value & 0xFFFFFFFFLL));

        return (static_cast<uint64_t>(low_part) << 32) | high_part;
    } else
    {
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ 64-bit portability endianness htonl

60
推荐指数
4
解决办法
4万
查看次数

如何在Linux上递归列出C中的目录?

我需要递归列出C编程中的所有目录和文件.我已经研究过FTW但是我没有使用这两种操作系统(Fedora和Minix).从过去几个小时里读到的所有不同的东西开始,我开始感到头疼.

如果有人知道我可以看到的代码片段那将是惊人的,或者如果有人能给我一个好的方向,我会非常感激.

c linux recursion

56
推荐指数
5
解决办法
8万
查看次数