请考虑以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
time_t seed;
time (&seed);
srand (seed);
int i, j, k, l;
// init random values s1 .. s8
int s[8];
for (l = 0; l < 8; l++) s[l] = rand ();
// zero result
int r[16];
for (j = 0; j < 16; j++) r[j] = 0;
// do 100 random xor functions
for (i = 0; i < 100; i++)
{
// generates random …Run Code Online (Sandbox Code Playgroud) 我从 CUDA 转移到 OpenCL。
在 CUDA 中,我能够进行运算符重载:
__device__ bool operator != (const uint2 a, const uint b)
{
return ((a.x != b) && (a.y != b));
}
Run Code Online (Sandbox Code Playgroud)
我可以在 OpenCL 内核中做同样的事情吗?
我有这个简单的C程序:
#include <stdio.h>
int main (int argc, char *argv[])
{
printf ("Hello, world\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我strace编译的程序printf()变为write():
$ strace ./hw > x
execve("./hw", ["./hw"], [/* 19 vars */]) = 0
...
write(1, "Hello, world\n", 13) = 13
...
Run Code Online (Sandbox Code Playgroud)
我的问题如下:我希望操作系统在执行write()调用后阻止程序执行.作为一个简单的非root用户,是否有可能创建这样的场景?请注意,我无法更改程序代码.
我的直觉告诉我应该,但我无法找到解决方案.想象一下write()会写入一个文件描述符,该文件描述符是一个无缓冲的字符设备.这样的设备,不会强制write()阻塞吗?