posix相关内容
我希望从C代码触摸我的文件以修改其访问日期。这似乎不起作用: struct stat fileSt; lstat(path, &fileSt); fileSt.st_mtime = time(NULL); 感谢您的帮助。 推荐答案 我认为您需要utime(2)。这应该足够了: utime(filename, NULL); 文件上说: int utime(con
..
在Shebang行上传递给脚本的标志与使用set内置标志的行为是否存在差异? 例如: #!/bin/bash -e # do stuff 与 #!/bin/bash set -e # do stuff (问题不是针对-e标志,而是针对任何此类标志)。 显然,set [flags]仅从其设置的点起有效。但在功能/行为方面是否还有其他区别? POSIX外壳中的行为也
..
我希望在C中创建一个文件树,并避免可能的争用条件。我的目的是使用open(3)创建根目录,open将返回一个目录文件描述符(dirfd),我将把它提供给后续的openat(3)/mkdirat(3)调用以创建树。 int dirfd = open(path, O_DIRECTORY | O_CREAT | O_RDONLY, mode); 执行此操作的通常方法是将第一个open调用替换为
..
您知道有没有包装POSIX和Linux函数和结构的好库(例如,套接字或文件描述符)转换为C++类?例如,我在考虑一个基本的FileDescriptor类和一些继承类(Unix套接字等),这些类具有write、read甚至一些syscall(sendfile、plice)等方法-所有这些都抛出异常,而不是设置errno。或某个共享内存类等。 我似乎找不到这样的东西,现在我考虑自己编写它,因为我
..
当我们的UNIX/C程序需要紧急退出时,我们使用exit(3)函数并安装atexit(3)处理程序进行紧急清理。这种方法工作得很好,直到我们的应用程序被线程化,在这一点上,exit()处理程序停止工作,这是可以预见的。 我们通过试验了解到一个错误,即线程可能已经死在atexit()处理程序中,并且它们的堆栈已被释放。 我在用atexit()链接线程消失的标准中找不到引号:线程在从mai
..
我有一个服务器在TZ=UTC中运行,代码如下: time_t t = time(NULL); struct tm tm; gmtime_r(&t, &tm); 问题是,当服务器在闰秒内时,tm.tm_sec == 60会吗? 例如,如果我处于以下时间跨度: 1998-12-31T23:59:60.00 - 915 148 800.00 1998-12-31T23:59:60.
..
这是我的代码,用于在冒号分隔值上循环并执行某些操作 使用每个值。 f() { IFS=: for arg in $1 do echo arg: $arg done } f foo:bar:baz 这在大多数符合POSIX的shell中都可以很好地工作。 $ dash foo.sh arg: foo arg: bar arg: baz
..
这是便携的吗? filter() { set -- CUT "$@" for x; do if test "$x" = CUT; then set -- # ignore args upto here else # perhaps more filtering set -- "$@" "$x" fi done printf "'%s' " "$@"; echo
..
我读到如果您想以可移植的方式使用Bash,您应该使用shebang: #!/usr/bin/env bash 但现在我在想:当我想明确声明我不依赖于Bash,而是编写了一个符合POSIX的脚本时,我是否应该使用: #!/bin/sh 还是#!/usr/bin/env sh在这里也更可取? 推荐答案 形式透视 POSIXrel=“noreferrer”>PO
..
标准方式如下: if (ptrace(PTRACE_TRACEME, 0, NULL, 0) == -1) printf("traced! "); 在这种情况下,如果跟踪当前进程(例如,使用gdb运行它或附加到它),ptrace将返回错误。 但这有一个严重的问题:如果调用成功返回,gdb以后可能不会附加到它。这是一个问题,因为我没有尝试实现反调试的东西。我的目的是在满足条件时发
..
..
..
我在 Debian GNU/Linux 8 (jessie) 64 位下使用 Python 2.7.9.我只是尝试通过调用 os.chflags(path, mode) 来更改文件属性.在 Python 文档中有一篇关于 os 的 文章 interface 表示此方法在 Unix 中可用,但不适用于 Linux.Python 总是抛出: Traceback(最近一次调用最后一次):文件“/hom
..
我如何获得 POSIX strerror_r 而不是 GNU 版本? 我在 Ubuntu 8.04 上使用 g++ 和 glibc 2.7 版进行编译(基于其中的内容). 编辑 在上面的手册页上写着: glibc 的功能测试宏要求(参见 feature_test_macros(7)): 在以下情况下提供 strerror_r() 的 XSI 兼容版本:(_POSIX_C
..
我试图了解为什么不能使用多个线程执行 UI 操作.这也是其他框架(如 OpenGL 或 cocos2d)的要求吗? C# 和 javascript 等其他语言怎么样?我尝试在 google 中查找,但人们提到了一些我不理解的关于 POSIX 线程的内容. 解决方案 在 Cocoa Touch 中,UIApplication 即你的应用程序的实例被附加到主线程,因为这个线程是由 UIA
..
..
我通过sendto发送一个UDP数据包,然后通过recv收到应答.如果recv没有收到回复,程序收到不进行.但是,udp 数据包可能会丢失,或者由于某种原因,数据包可能无法传递,从而导致程序卡在 recv 行.我想知道如果没有数据包到达,例如一分钟,如何为 recv 设置超时,然后跳过该行并继续执行代码? 我没有粘贴完整的代码,因为它是一个通用的 udp 代码,我的问题与唯一的 recv 有
..
在具有有线和无线接口(例如 192.168.1.x 和 192.168.2.x 子网)的 Linux 系统上,我想发送一个通过所有可用接口(即通过有线和无线接口). 目前我 sendto() 到 INADDR_BROADCAST,但似乎只通过其中一个接口发送广播(并不总是相同,后续广播可能使用另一个接口). 有没有一种方法可以发送通过每个接口发出的 UDP 广播? 解决方案 首
..
我正在尝试在 C 中实现一个队列,它会导致进程不忙地等待,直到队列中有一个元素可以使用.我尝试了两种不同的方法来实现这一目标. 我遇到的第一个问题是入队/出队操作是否有 if 条件来检查边界(if(q->count == QUEUESIZE)),对 sem_wait 的调用将立即返回,因为没有其他进程获得锁. 如果我将条件更改为 while(q->count == QUEUESIZE)
..
我正在使用队列实现 2 个进程之间的通信.问题是当我调用函数 mq_receive 时,我得到这个错误:消息太长. 我做了以下事情: struct mq_attr attr;长尺寸 = attr.mq_msgsize;....//初始化队列 "/gateway"int rc = mq_receive(网关、缓冲区、大小、&prio); 如果我打印大小值,我得到 size=1,而当我打印相
..