本文整理汇总了C++中SAFE_WRITE函数的典型用法代码示例。如果您正苦于以下问题:C++ SAFE_WRITE函数的具体用法?C++ SAFE_WRITE怎么用?C++ SAFE_WRITE使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SAFE_WRITE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[])
{
pid_t cpid2;
char path[BUFSIZ];
int lc;
int fd;
tst_parse_opts(argc, argv, NULL, NULL);
setup();
for (lc = 0; TEST_LOOPING(lc); lc++) {
tst_count = 0;
parentuid = geteuid();
parentgid = getegid();
cpid1 = ltp_clone_quick(CLONE_NEWUSER | SIGCHLD,
(void *)child_fn1, NULL);
if (cpid1 < 0)
tst_brkm(TBROK | TERRNO, cleanup,
"cpid1 clone failed");
cpid2 = ltp_clone_quick(CLONE_NEWUSER | SIGCHLD,
(void *)child_fn2, NULL);
if (cpid2 < 0)
tst_brkm(TBROK | TERRNO, cleanup,
"cpid2 clone failed");
if (setgroupstag == false) {
sprintf(path, "/proc/%d/setgroups", cpid1);
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
SAFE_WRITE(cleanup, 1, fd, "deny", 4);
SAFE_CLOSE(cleanup, fd);
sprintf(path, "/proc/%d/setgroups", cpid2);
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
SAFE_WRITE(cleanup, 1, fd, "deny", 4);
SAFE_CLOSE(cleanup, fd);
}
updatemap(cpid1, UID_MAP, CHILD1UID, parentuid, cleanup);
updatemap(cpid2, UID_MAP, CHILD2UID, parentuid, cleanup);
updatemap(cpid1, GID_MAP, CHILD1GID, parentuid, cleanup);
updatemap(cpid2, GID_MAP, CHILD2GID, parentuid, cleanup);
TST_SAFE_CHECKPOINT_WAKE_AND_WAIT(cleanup, 1);
tst_record_childstatus(cleanup, cpid1);
tst_record_childstatus(cleanup, cpid2);
}
cleanup();
tst_exit();
}
示例2: setup
void setup(void)
{
char buf[CHUNK];
fd = SAFE_OPEN("file", O_RDWR | O_CREAT, 0644);
memset(buf, 'a', sizeof(buf));
SAFE_WRITE(1, fd, buf, sizeof(buf));
memset(buf, 'b', sizeof(buf));
SAFE_WRITE(1, fd, buf, sizeof(buf));
}
示例3: main
int main(int argc, char *argv[])
{
int status;
int lc;
int childpid;
int parentuid;
int parentgid;
char path[BUFSIZ];
char content[BUFSIZ];
int fd;
tst_parse_opts(argc, argv, NULL, NULL);
setup();
for (lc = 0; TEST_LOOPING(lc); lc++) {
tst_count = 0;
childpid = ltp_clone_quick(CLONE_NEWUSER | SIGCHLD,
(void *)child_fn1, NULL);
if (childpid < 0)
tst_brkm(TFAIL | TERRNO, cleanup, "clone failed");
parentuid = geteuid();
parentgid = getegid();
sprintf(path, "/proc/%d/uid_map", childpid);
sprintf(content, "100 %d 1", parentuid);
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
SAFE_WRITE(cleanup, 1, fd, content, strlen(content));
SAFE_CLOSE(cleanup, fd);
sprintf(path, "/proc/%d/gid_map", childpid);
sprintf(content, "100 %d 1", parentgid);
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
SAFE_WRITE(cleanup, 1, fd, content, strlen(content));
SAFE_CLOSE(cleanup, fd);
TST_SAFE_CHECKPOINT_WAKE(cleanup, 0);
if (waitpid(childpid, &status, 0) < 0)
tst_brkm(TBROK | TERRNO, cleanup, "waitpid failed");
if (WIFSIGNALED(status)) {
tst_resm(TFAIL, "child was killed with signal = %d",
WTERMSIG(status));
} else if (WIFEXITED(status) && WEXITSTATUS(status) != 0)
tst_resm(TFAIL, "child exited abnormally");
else
tst_resm(TPASS, "the uid and the gid are right inside "
"the container");
}
cleanup();
tst_exit();
}
示例4: write_utf8
static void write_utf8(buffer_t buffer, VALUE string) {
if (!is_legal_utf8_string(RSTRING_PTR(string), RSTRING_LEN(string))) {
buffer_free(buffer);
rb_raise(InvalidStringEncoding, "String not valid UTF-8");
}
SAFE_WRITE(buffer, RSTRING_PTR(string), RSTRING_LEN(string));
}
示例5: setup
static void setup(void)
{
int i;
if ((tst_kvercmp(2, 6, 17)) < 0) {
tst_brkm(TCONF, NULL,
"The splice is supported 2.6.17 and newer");
}
tst_sig(NOFORK, DEF_HANDLER, cleanup);
TEST_PAUSE;
tst_tmpdir();
if (tst_fs_type(cleanup, ".") == TST_NFS_MAGIC) {
if (tst_kvercmp(2, 6, 32) < 0)
tst_brkm(TCONF, cleanup, "Cannot do splice on a file"
" on NFS filesystem before 2.6.32");
}
for (i = 0; i < TEST_BLOCK_SIZE; i++)
buffer[i] = i & 0xff;
fd_in = SAFE_OPEN(cleanup, TESTFILE1, O_WRONLY | O_CREAT | O_TRUNC, 0777);
SAFE_WRITE(cleanup, 1, fd_in, buffer, TEST_BLOCK_SIZE);
SAFE_CLOSE(cleanup, fd_in);
fd_in = 0;
}
示例6: setup
static void setup(void)
{
int i, fd;
fd = SAFE_OPEN(TEST_FILE, O_RDWR | O_CREAT, 0664);
pagesize = getpagesize();
/* Writing 16 pages of random data into this file */
for (i = 0; i < (pagesize / 2); i++)
SAFE_WRITE(1, fd, STR, sizeof(STR) - 1);
SAFE_FSTAT(fd, &st);
file1 = SAFE_MMAP(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
file2 = SAFE_MMAP(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
SAFE_MUNMAP(file2 + st.st_size - pagesize, pagesize);
nonalign = file1 + 100;
ptr_addr = SAFE_MALLOC(st.st_size);
tmp_addr = (void*)LTP_ALIGN((long)ptr_addr, pagesize);
SAFE_CLOSE(fd);
tcases_filter();
}
示例7: setup
static void setup(void)
{
unsigned int i;
int fd;
SAFE_MKDIR(TMP_DIR, 0664);
SAFE_MOUNT(TMP_DIR, TMP_DIR, "tmpfs", 0, NULL);
fd = SAFE_OPEN(TEST_FILE, O_RDWR | O_CREAT, 0664);
/* Writing 40 KB of random data into this file [32 * 1280 = 40960] */
for (i = 0; i < 1280; i++)
SAFE_WRITE(1, fd, STR, strlen(STR));
SAFE_FSTAT(fd, &st);
/* Map the input file into shared memory */
sfile = SAFE_MMAP(NULL, st.st_size,
PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
/* Map the input file into private memory. MADV_HUGEPAGE only works
* with private anonymous pages */
amem = SAFE_MMAP(NULL, st.st_size,
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
SAFE_CLOSE(fd);
}
示例8: child_alloc
static void child_alloc(int *bufsz_arr)
{
char **foo;
int i, j;
char buf[BUFSIZ];
long count;
foo = SAFE_MALLOC(tst_exit, nr_iovecs * sizeof(char *));
count = 0;
for (i = 0; i < nr_iovecs; i++) {
foo[i] = SAFE_MALLOC(tst_exit, bufsz_arr[i]);
for (j = 0; j < bufsz_arr[i]; j++) {
foo[i][j] = count % 256;
count++;
}
}
tst_resm(TINFO, "child 0: %d iovecs allocated and initialized.",
nr_iovecs);
/* passing addr via pipe */
SAFE_CLOSE(tst_exit, pipe_fd[0]);
snprintf(buf, BUFSIZ, "%p", (void *)foo);
SAFE_WRITE(tst_exit, 1, pipe_fd[1], buf, strlen(buf));
SAFE_CLOSE(tst_exit, pipe_fd[1]);
/* wait until child_invoke is done reading from our VM */
safe_semop(semid, 0, -1);
}
示例9: setup
static void setup(void)
{
int fd;
tst_sig(FORK, DEF_HANDLER, cleanup);
TEST_PAUSE;
tst_tmpdir();
sprintf(fname, "fname_%d", getpid());
fd = SAFE_OPEN(cleanup, fname, O_CREAT | O_RDWR, 0644);
SAFE_WRITE(cleanup, 1, fd, fname, 1);
SAFE_CLOSE(cleanup, fd);
if ((fd_notify = myfanotify_init(FAN_CLASS_CONTENT, O_RDONLY)) < 0) {
if (errno == ENOSYS) {
tst_brkm(TCONF, cleanup,
"fanotify is not configured in this kernel.");
} else {
tst_brkm(TBROK | TERRNO, cleanup,
"fanotify_init failed");
}
}
if (myfanotify_mark(fd_notify, FAN_MARK_ADD, FAN_ACCESS_PERM |
FAN_OPEN_PERM, AT_FDCWD, fname) < 0) {
tst_brkm(TBROK | TERRNO, cleanup,
"fanotify_mark (%d, FAN_MARK_ADD, FAN_ACCESS_PERM | "
"FAN_OPEN_PERM, AT_FDCWD, %s) failed. "
"CONFIG_FANOTIFY_ACCESS_PERMISSIONS not "
"configured in kernel?", fd_notify, fname);
}
}
示例10: setup
void setup(void)
{
if ((tst_kvercmp(2, 6, 17)) < 0) {
tst_brkm(TCONF, cleanup, "This test can only run on kernels "
"that are 2.6.17 or higher");
}
TEST_PAUSE;
tst_sig(FORK, DEF_HANDLER, cleanup);
tst_tmpdir();
SAFE_FILE_PRINTF(cleanup, TEST_FILE, STR);
rdfd = SAFE_OPEN(cleanup, TEST_FILE, O_RDONLY);
wrfd = SAFE_OPEN(cleanup, TEST_FILE2,
O_WRONLY | O_CREAT, 0644);
appendfd = SAFE_OPEN(cleanup, TEST_FILE3,
O_RDWR | O_CREAT | O_APPEND, 0644);
SAFE_PIPE(cleanup, pipes);
SAFE_WRITE(cleanup, 1, pipes[1], STR, sizeof(STR) - 1);
}
示例11: setup
static void setup(void)
{
int i, fd;
fd = SAFE_OPEN(TEST_FILE, O_RDWR | O_CREAT, 0664);
pagesize = getpagesize();
/* Writing 16 pages of random data into this file */
for (i = 0; i < (pagesize / 2); i++)
SAFE_WRITE(1, fd, STR, sizeof(STR) - 1);
SAFE_FSTAT(fd, &st);
file1 = SAFE_MMAP(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
file2 = SAFE_MMAP(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
file3 = SAFE_MMAP(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
shared_anon = SAFE_MMAP(0, MAP_SIZE, PROT_READ, MAP_SHARED |
MAP_ANONYMOUS, -1, 0);
nonalign = file1 + 100;
ptr_addr = SAFE_MALLOC(st.st_size);
tmp_addr = (void*)LTP_ALIGN((long)ptr_addr, pagesize);
/* unmap as last step to avoid subsequent mmap(s) pick same address */
SAFE_MUNMAP(file2 + st.st_size - pagesize, pagesize);
SAFE_CLOSE(fd);
tcases_filter();
}
示例12: testfunc_largefile
void testfunc_largefile(void)
{
int fd;
off64_t offset;
fd = SAFE_OPEN(cleanup, LARGE_FILE,
O_LARGEFILE | O_RDWR | O_CREAT, 0777);
offset = lseek64(fd, 4.1*1024*1024*1024, SEEK_SET);
if (offset == -1)
tst_brkm(TBROK | TERRNO, cleanup, "lseek64 failed");
SAFE_WRITE(cleanup, 1, fd, STR, sizeof(STR) - 1);
SAFE_CLOSE(cleanup, fd);
TEST(openat(AT_FDCWD, LARGE_FILE, O_LARGEFILE | O_RDONLY, 0777));
if (TEST_RETURN == -1) {
tst_resm(TFAIL, "test O_LARGEFILE for openat failed");
} else {
tst_resm(TPASS, "test O_LARGEFILE for openat success");
SAFE_CLOSE(cleanup, TEST_RETURN);
}
}
示例13: setup
static void setup(void)
{
tst_sig(NOFORK, DEF_HANDLER, cleanup);
TEST_PAUSE;
tst_tmpdir();
sprintf(fname, "tfile_%d", getpid());
fd = SAFE_OPEN(cleanup, fname, O_RDWR | O_CREAT, 0700);
SAFE_WRITE(cleanup, 1, fd, fname, 1);
/* close the file we have open */
SAFE_CLOSE(cleanup, fd);
if ((fd_notify = myfanotify_init(FAN_CLASS_NOTIF, O_RDONLY)) < 0) {
if (errno == ENOSYS) {
tst_brkm(TCONF, cleanup,
"fanotify is not configured in this kernel.");
} else {
tst_brkm(TBROK | TERRNO, cleanup,
"fanotify_init failed");
}
}
}
示例14: mkfile
int mkfile(int size)
{
int fd, i;
fd = SAFE_OPEN(TEST_FILENAME, O_RDWR | O_CREAT, 0600);
SAFE_UNLINK(TEST_FILENAME);
for (i = 0; i < size; i++)
SAFE_WRITE(1, fd, "a", 1);
SAFE_WRITE(1, fd, "\0", 1);
if (fsync(fd) == -1)
tst_brk(TBROK | TERRNO, "fsync()");
return fd;
}
示例15: write_utf8
static void write_utf8(buffer_t buffer, VALUE string, char check_null) {
result_t status = check_string(RSTRING_PTR(string), RSTRING_LEN(string),
0, check_null);
if (status == HAS_NULL) {
buffer_free(buffer);
rb_raise(InvalidDocument, "Key names / regex patterns must not contain the NULL byte");
}
SAFE_WRITE(buffer, RSTRING_PTR(string), RSTRING_LEN(string));
}