标签: posix

在python中的whoami

找出运行python进程的用户的最佳方法是什么?

我能做到这一点:

name = os.popen('whoami').read() 
Run Code Online (Sandbox Code Playgroud)

但这必须开始一个全新的过程.

os.environ["USER"]
Run Code Online (Sandbox Code Playgroud)

有时工作,但有时不设置环境变量.

python posix

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

我应该允许什么尺寸的strerror_r?

OpenGroup POSIX.1-2001定义了strerror_r,Linux标准基础核心规范3.1也是如此.但我找不到对错误消息可合理预期的最大大小的引用.我希望有一些定义可以放在我的代码中,但没有我能找到的.

代码必须是线程安全的.这就是使用strerror_r而不是strerror的原因.

有人知道我可以用的符号吗?我应该创建自己的?


int result = gethostname(p_buffy, size_buffy);
int errsv = errno;
if (result < 0)
{
    char buf[256];
    char const * str = strerror_r(errsv, buf, 256);
    syslog(LOG_ERR,
             "gethostname failed; errno=%d(%s), buf='%s'",
             errsv,
             str,
             p_buffy);
     return errsv;
}
Run Code Online (Sandbox Code Playgroud)

从文件:

公开集团基本规格第6期:

错误

如果出现以下情况,strerror_r()函数可能会失败:

  • [ERANGE]通过strerrbuf和buflen提供的存储空间不足,无法包含生成的消息字符串.

从来源:

的glibc-2.7 /的glibc-2.7 /串/ strerror.c:41:

    char *
    strerror (errnum)
         int errnum;
    {
        ...
        buf = malloc (1024);
Run Code Online (Sandbox Code Playgroud)

c linux standards posix glibc

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

为什么在Mac OS X上不推荐使用sem_init(),sem_getvalue(),sem_destroy() - 以及取代它们的原因是什么?

当我使用POSIX sem_init()函数编译程序时,我得到一个编译警告(因为我通常使用的错误-Werror),当我在Mac OS X 10.10.1(Yosemite)上使用GCC 4.9.1或版本的版本编译时,该函数已被弃用Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)来自XCode 6.1.1的Clang().快速浏览一下/usr/include/sys/semaphore.h表示此功能确实有__deprecated它的声明之后的标签,因为这样做 sem_getvalue()sem_destroy().

问题:

  1. 鉴于POSIX规范中没有任何弃用的暗示,为什么在Mac OS X上将这三个函数单独列为已弃用?

  2. 鉴于它们已被弃用,替代品是什么,为什么替代品更受欢迎?

(我确实首先检查了Ask Different ;没有标记问题,也没有问题询问已弃用的系统调用 - 只有程序.)

c macos posix

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

信号和中断比较

基于各种参考文献,我在Linux中信号的主观定义是"用于通知进程有关特定事件发生的触发器.此处的事件可能涉及软件异常.此外,信号也可用于IPC机制. " 我的问题是

  • 我假设只通过信号通知例外(软件中断).硬件中断的情况.
  • 信号的各种来源是什么?对我而言,内核始终是信号的来源.(除了用于IPC)
  • 信号处理程序和ISR之间的区别?
  • 信号阻塞和中断屏蔽之间的区别?

linux posix signals interrupt isr

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

UNIX便携式原子操作

在C中是否有(POSIX-)可移植方式用于原子变量操作,类似于使用pthread的可移植线程?

原子操作是像"递增和获取"这样的操作,它们以原子方式执行,这意味着没有上下文切换可以干扰操作.在Linux内核空间中,我们必须使用atomic_t类型,在Java中我们有java.util.concurrent.atomic包.

在Linux上,atomic.h文件提供原子操作,但include依赖于平台,例如#include <asm-x86_64/atomic.h>,它在Mac OS X上不能以类似的方式提供.

c concurrency posix atomic

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

为什么POSIX要求CHAR_BIT == 8?

在POSIX的基本原理中有一个注意事项,强制CHAR_BIT为8是一个让步,以保持与C99的对齐而不抛弃套接字/网络,但我从来没有看到冲突究竟是什么的解释.有没有人有轶事或引用为什么它被认为是必要的?

编辑:我已经得到了很多关于为什么它CHAR_BIT成为8的原因的猜测答案,我同意,但我真正想要的是C99与POSIX中的网络技术之间的技术冲突是什么.我最好的猜测是它与C99有关,要求uint*_t是精确大小的类型(没有填充),而inttypes.h之前在POSIX中没有提出这样的要求.

c posix

30
推荐指数
2
解决办法
2858
查看次数

如何在C(主机名和域信息)中找到当前计算机的完整主机名?

在C项目(POSIX)中,如何获取当前系统的完全限定名称?

例如,我可以通过gethostname()unistd.h 获取我的机器的主机名 .这可能会给我machine3回报,但我实际上是在寻找machine3.somedomain.com例子.

我如何获取此信息?如果可能的话,我不想使用对system()的调用来执行此操作.

c sockets environment posix

29
推荐指数
2
解决办法
10万
查看次数

如何在freopen("out.txt","a",stdout)之后将输出重定向回屏幕

#include <stdio.h>

int main() {
    printf("This goes to screen\n");
    freopen("out.txt", "a", stdout);
    printf("This goes to out.txt");
    freopen("/dev/stdout", "a", stdout);
    printf("This should go to screen too, but doesn't\n");

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

我调用freopen将stdout重定向到out.txt然后我在文件上打印一些东西,现在我想将它重定向回屏幕,但是freopen("/ dev/stdout","a",stdout); 不起作用.有没有办法使用ANSI C或POSIX系统调用?

c posix stdout

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

如何检查stdin是来自终端还是shell脚本中的管道?

我正在编写一个POSIX shell脚本,它可能会也可能不会以foo.sh < test.txt非交互方式从stdin接收输入.

如何检查stdin上是否有任何内容,以避免停止while read -r line...

posix sh

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

创建使用getaddrinfo的静态链接二进制文件?

我已经包含了标题netdb.h,包含在哪里getaddrinfo,但是gcc发出了这个警告:

warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

gcc -m32 -static -s -O2 -std=c99 -D_POSIX_C_SOURCE=200112L myprogram.c
Run Code Online (Sandbox Code Playgroud)

如何静态编译丢失的文件?

可能的解决方案:

  1. 可能是glibc安装缺少静态编译所需的相应目标文件.如果是这种情况,请创建相应的目标文件并在编译时链接它.

  2. 尝试EGLIBC而不是glibc.

  3. 我成功地用dietlibc编译了我的程序,它编译时没有任何错误加上得到的二进制文件比glibc制作的要小得多.

c gcc posix c99 static-linking

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

标签 统计

posix ×10

c ×7

linux ×2

atomic ×1

c99 ×1

concurrency ×1

environment ×1

gcc ×1

glibc ×1

interrupt ×1

isr ×1

macos ×1

python ×1

sh ×1

signals ×1

sockets ×1

standards ×1

static-linking ×1

stdout ×1