标签: posix

Linux MMAP内部

关于mmapLinux系统中的实现,我有几个问题似乎没有太多记录:

使用时将文件映射到内存时mmap,如何处理预取此类文件中的数据?

也就是当你从mmaped区域读取数据时会发生什么?这些数据是否已移至L1/L2缓存?它是直接从磁盘缓存中读取的吗?prefetchnta相似的ASM指令是否适用于mmaped区域?

实际mmap通话的开销是多少?它是相对于映射数据量还是常量?

希望有人对此有所了解.提前致谢.

linux posix mmap

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

C中的函数重载

今天,看一下手册页open(),我注意到这个函数是'重载':

   int open(const char *pathname, int flags);
   int open(const char *pathname, int flags, mode_t mode);
Run Code Online (Sandbox Code Playgroud)

我不认为这是可能的C.实现这个目的的"诀窍"是什么?

LATER EDIT:
所以它并没有真正超载,因为在使用varargs时 - 你只能提供相同类型的多个参数.那么,mode_t幕后是一个int吗?

c posix overloading

22
推荐指数
3
解决办法
1782
查看次数

哪个更适合本地IPC,POSIX消息队列(mqueues)或Unix域(本地)套接字?

使用POSIX消息队列或Unix域套接字进行本地IPC通信是否更好?

我曾经在机器之间使用Unix套接字(不是域名),我记得制作和断开连接会导致套接字在最终消失之前停留一段时间.此外,如果您想要"可靠"的交换,您必须使用TCP或设计应用程序以返回ACK.我不确定这是否也适用于Unix域套接字.

在我目前的项目中,我们需要本地IPC.我的第一反应是使用POSIX MQueues,因为我之前使用它们进行本地消息传递.但是,一位同事正在建议使用Unix域套接字.

是一个比另一个更好,还是编程熟悉的问题?或者它可能取决于正在创建的应用程序?

从总体上看,我们正在开发的应用程序遵循客户端/服务器模型.客户端向服务器发送消息以"做某事".但是,客户端不会等待"完成"响应 - 尽管他们确实想知道他们的请求是否已被接收.

发送方的基本逻辑是:

connect to server
send request
note if the send worked or not
disconnect from server
Run Code Online (Sandbox Code Playgroud)

一台服务器可能有数百个客户端.

我们正在运行Linux操作系统的SMP系统(4-8个核心)上执行.

提前致谢.

c c++ sockets posix ipc

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

有什么东西可以替换<ucontext.h>函数吗?

<ucontext.h>不推荐使用用户线程函数,因为它们使用不推荐的C 函数(它们使用带有空括号的函数声明作为参数).

它们有标准替代品吗?我不认为成熟的线程擅长实现协作线程.

c posix user-thread

22
推荐指数
3
解决办法
7325
查看次数

设置创建或更改时间戳

使用utimes,futimes,futimens等,也可以设置一个文件的访问和修改时间戳.

修改时间是文件数据更改的最后时间.同样,"ctime"或更改时间是最后一次更改文件上的属性(如权限).(Linux/POSIX维护三个时间戳:mtime和ctime,已经讨论过,'atime'或访问时间.)

是否有设置更改时间戳的功能?(其中"更改"是属性修改或'ctime',而不是修改时间'mtime'.)(我理解想要更改更改时间戳的循环性质,但想想归档软件 - 确切地恢复文件会很好因为它是.)

创建时间戳是否有任何功能?(我意识到这ext2不支持这个,但我想知道Linux是否支持,对于那些支持它的文件系统.)

如果不可能,那背后的原因是什么呢?

linux posix timestamp

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

如何确定操作系统是否为C中的POSIX?

相关问题
如何在C/C++中检测操作系统?

如何在GCC或ANSI C中找出我在运行的操作系统?

我会好的如果我能知道我是否在POSIX上运行.


更新:

无论是在编译时还是在运行时,它对我没有任何影响.我在调试例程中使用它,因此性能并不重要.

我正在寻找路径分隔符.Windows和Unix/Linux/BSD会没事的.

而且,我正在尝试在路径上找到基本名称.我找到了一些解决方案,但解决方案包括许多我不想要的包含.我要修改这个解决方案.


我在Mac OS X 10.4.11上,按照这个URL,我执行并得到以下输出:

mac $ touch myfile.c
mac $ gcc -std=c99 -E -dM myfile.c
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 0
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 1
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.79769313486231580793728971405301e+308L
#define __APPLE_CC__ 5367
#define __UINTMAX_TYPE__ long long unsigned int
#define __LDBL_MAX_EXP__ 1024
#define __SCHAR_MAX__ 127
#define __USER_LABEL_PREFIX__ _
#define …
Run Code Online (Sandbox Code Playgroud)

c gcc posix

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

OSX上的单调时钟

CLOCK_MONOTONIC似乎不可用,所以clock_gettime已经用完了.

我在某些地方读过,mach_absolute_time()可能是正确的方法,但在阅读之后它是一个'cpu依赖值',它立即让我想知道它是否在下面使用rtdsc.因此,即使它是单调的,该值也可能随时间漂移.此外,线程关联性问题可能会导致调用函数产生有意义的不同结果(使其在所有内核中不是单调的).

当然,这只是猜测.有谁知道mach_absolute_time实际上是如何工作的?我实际上正在寻找clock_gettime的替代品(CL​​OCK_MONOTONIC ......或类似于OSX的东西.无论时钟源是什么,我都期望至少毫秒精度和毫秒精度.

我只想了解哪些时钟可用,哪些时钟是单调的,如果某些时钟漂移,有线程亲和性问题,所有Mac硬件都不支持,或者执行"超高"数量的cpu周期.

以下是我能够找到关于这个主题的链接(一些已经死链接,但在archive.org上找不到):

https://developer.apple.com/library/mac/#qa/qa1398/_index.html http://www.wand.net.nz/~smr26/wordpress/2009/01/19/monotonic-time-in -mac-os-x / http://www.meandmark.com/timing.pdf

谢谢!布雷特

macos posix timing objective-c clock

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

Java 7 - 如何检查操作系统是否符合POSIX标准

我正在编写一个跨平台的应用程序,它创建临时文件并将这些文件复制到另一个位置,每个人都需要这些文件.(默认情况下,只有所有者对临时文件具有读访问权.)我尝试使用POSIX文件权限,如下所示:

FileAttribute<Set<PosixFilePermission>> attrs =
  PosixFilePermissions.asFileAttribute(PosixFilePermissions.fromString("rw-r--r--"));
Path temp = Files.createTempFile(null, ".tmp", attrs);
Run Code Online (Sandbox Code Playgroud)

但这会导致非POSIX平台出现异常:

java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
Run Code Online (Sandbox Code Playgroud)

我想添加一个简单的检查,以便我可以在必要时使用文件权限,而不会破坏与其他平台的兼容性.

java posix nio nio2

22
推荐指数
1
解决办法
3090
查看次数

等待(null)并等待(&status)C语言和状态

wait(null)wait(&status)c系统编程有什么区别?

指针状态的内容是什么?

c unix posix status wait

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

多个线程在单个套接字或管道上执行poll()或select()

POSIX和其他标准对多线程在同一时间执行poll()select()调用单个套接字或管道句柄的情况有何看法?

如果有任何数据到达,只有一个等待线程被唤醒或所有等待线程被唤醒?

sockets multithreading posix sus

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

标签 统计

posix ×10

c ×5

linux ×2

sockets ×2

c++ ×1

clock ×1

gcc ×1

ipc ×1

java ×1

macos ×1

mmap ×1

multithreading ×1

nio ×1

nio2 ×1

objective-c ×1

overloading ×1

status ×1

sus ×1

timestamp ×1

timing ×1

unix ×1

user-thread ×1

wait ×1