ファイルのアクセス権限設定について教えて下さい。

Linux環境化でファイルのアクセス権限情報を設定するための
関数はないでしょうか?
※ open関数のmodeに設定したのですが、ステッィキービット等が
付与できません。
[0644]は可能だが、[3644]は設定できません。

どなたかご存知の方がいらっしゃりましたら、ご教授下さい。

#環境
 言語:C、OS:Cent OS
#参考
 取得について:URL http://oshiete1.goo.ne.jp/qa4955286.html

このQ&Aに関連する最新のQ&A

A 回答 (3件)

スティッキービットの設定出来ましたよ。



----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <string.h>

int main(int argc, char *argv[])
{
  char filename[] = "test_file.txt";
  struct stat buf;
  int nResult = 0;

  memset(&buf, 0, sizeof(buf));
  nResult = stat(filename, &buf);

  if (nResult)
  {
    perror("ファイル情報が取得できませんでした.");
    return 1;
  }

  nResult = chmod(filename, buf.st_mode | S_ISVTX);
  if (nResult)
  {
    perror("スティッキービットの設定に失敗しました.");
    return 1;
  }

  return 0;
}
----------------------------------------------------------------------
S_ISVTX と言うのがスティッキービットのフラグです。
    • good
    • 0

0644は8進数です 2進数にすると 110 100 100


3644は10進数ですね

この回答への補足

失礼いたしました。
[00644]は可能ですが、[03644]はできません。
に訂正させていただきます。

補足日時:2009/05/28 12:50
    • good
    • 0
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。
chmodですと作成した後に変更という流れになると思いますが
作成したと同時に権限設定も終えてしまいたいのです。

情報が足りず、申し訳ありません。

お礼日時:2009/05/28 12:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q職務権限基準表を英語で

職務権限基準表を英語でなんというのでしょうか。

Aベストアンサー

tabuk1さん、こんにちは!

私の会社では Authoritiesと言っていますね。
それが表になっているのなら、
Table of authoritiesとか、
Authorities chartで良いのではないかと思いますが。

Q[C#]DataGridViewのVirtual Modeについて

DataGridViewのVirtual Modeをtrueにしてデータを表示させています。
DataGridViewのRowCountを設定すると、件数が多い(数万件以上)場合に、CPUの使用率が高くなり、動作が遅くなってしまいます。

例:
Dgview.RowCount = 100000;

画面に表示されているセルに関係なく、すべてのセルについてCellValueNeededイベントが発生してしまっているようなのですが、その原因がつかめません。

画面に表示されているセルのCellValueNeededが優先的に発生するようで、データ自体は正常に表示されます。
しかし、画面上のセル分のイベントが終わると、また続きからCellValueNeededイベントが再開されてしまいます。
セルの値はDataTable変数に一度値を格納したものをセルごとに取得しています。

試しに、100000件のDataGridViewのみを表示するプログラムを作成した場合、正常に動作しました。
現在作成中のプログラムでのバグ?のようです。
他に特別なイベントが発生している形跡は自分の確認した限りでは見られません。

説明下手で申し訳ありませんが、原因のわかる方、回答お願いします。

DataGridViewのVirtual Modeをtrueにしてデータを表示させています。
DataGridViewのRowCountを設定すると、件数が多い(数万件以上)場合に、CPUの使用率が高くなり、動作が遅くなってしまいます。

例:
Dgview.RowCount = 100000;

画面に表示されているセルに関係なく、すべてのセルについてCellValueNeededイベントが発生してしまっているようなのですが、その原因がつかめません。

画面に表示されているセルのCellValueNeededが優先的に発生するようで、データ自体は正常に表示されます。
しかし、...続きを読む

Aベストアンサー

 こんばんは。
 断言は出来ませんが、実行中に
 Dgview.RowCount = 100000;
 を実行すると、拡大されたセルの分だけCellValueNeededイベントが発生しています。
 その際、帳尻あわせをする為にデータテーブルの件数も拡大する処理をしていませんか(要は其処が重たい原因ではないかと)。
 以下の様にしてボタンを押した瞬間にセルとデータテーブルを10万件まで拡大して見ましたが、一定時間重たくなります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsApplication
{
public partial class Form1 : Form
{
DataTable dataTable1;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
//テーブルの作成
dataTable1 = new DataTable();
dataTable1.Columns.Add();
dataTable1.Columns.Add();

//テーブルにデータを25件まで拡大
ExpandRowRange(25);

//セルを50件まで拡大
dataGridView1.ColumnCount = 2;
dataGridView1.RowCount = 50;
}

private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
//セルの位置がテーブル件数を超えているので引き返す
if (e.RowIndex >= dataTable1.Rows.Count ||
e.ColumnIndex >= dataTable1.Columns.Count)
return;

e.Value = dataTable1.Rows[e.RowIndex][e.ColumnIndex];
}

private void dataGridView1_CellValuePushed(object sender, DataGridViewCellValueEventArgs e)
{
if (e.Value == null)
return;

//セルの位置がテーブル件数を超えているので、テーブル件数を拡大する
if (e.RowIndex >= dataTable1.Rows.Count)
ExpandRowRange(e.RowIndex + 1);

dataTable1.Rows[e.RowIndex][e.ColumnIndex] = e.Value;
}

private void button1_Click(object sender, EventArgs e)
{
//テーブル件数を10万件まで拡大する(重たい)
ExpandRowRange(100000);

//セルを10万件まで拡大する
dataGridView1.RowCount = 100000;
}

private void ExpandRowRange(int index)
{
for (int i = dataTable1.Rows.Count; i < index; ++i)
dataTable1.Rows.Add(new Object[] { i.ToString(), "データ" + i.ToString() });
}
}
}

 データテーブルの代わりに
 http://msdn.microsoft.com/ja-jp/library/3eayzh46(VS.80).aspx
 を使えば負担が軽減するかもしれません。

 こんばんは。
 断言は出来ませんが、実行中に
 Dgview.RowCount = 100000;
 を実行すると、拡大されたセルの分だけCellValueNeededイベントが発生しています。
 その際、帳尻あわせをする為にデータテーブルの件数も拡大する処理をしていませんか(要は其処が重たい原因ではないかと)。
 以下の様にしてボタンを押した瞬間にセルとデータテーブルを10万件まで拡大して見ましたが、一定時間重たくなります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
usi...続きを読む

Q管理者権限を英語で(IT英語)

管理者権限がありません。と英語で表現するにはどういうのが適切でしょうか?

また、IT関連用語の英語を学べるサイトなど教えて頂けないでしょうか?ぜひお願いいたします。

Aベストアンサー

administrative rightも一候補ですね。
http://vine-linux.ddo.jp/windows/domainremove.php

IT用語集 で検索すれば一杯ヒットします。
英/英サイトも参考にして下さい。
http://whatis.techtarget.com/

メーカーやベンダーのサイトにも用語集があります。

参考URL:http://yougo.ascii24.com/

Qp[-3][-4]にアクセス出来るようにしたい

ポインタのポインタをうまく使って、p[-3][-4]のようなアクセス(が有効に行われるように)したいのですが、うまくいきません。
ご教授願えないでしょうか。

以下のコードで p[-3][0] を a[0][0] を参照させる(?)ようにはできました。
後ろ側の添え字のマイナスシフトができないのです。
つまり p[-3][-4] が a[0][0] を参照させるようにするギミックが知りたいのです。よろしくお願いします。

-------------------------------------

int **a;

// 領域の動的確保 ( [12][18] )
a = new int*[12];
for(int i = 0; i < 12; i++)
a[i] = new int[18];


int **p;

p = &(a[3]) ;

for (int y=0; y<12;y++)
for (int x=0; x<18;x++)
a[y][x] = 1;

p[-3][0] = 99; //a[0][0]が99になる。


//領域の解放
for(int i = 0; i < 12; i++)
delete [] a[i];

delete [] a;

ポインタのポインタをうまく使って、p[-3][-4]のようなアクセス(が有効に行われるように)したいのですが、うまくいきません。
ご教授願えないでしょうか。

以下のコードで p[-3][0] を a[0][0] を参照させる(?)ようにはできました。
後ろ側の添え字のマイナスシフトができないのです。
つまり p[-3][-4] が a[0][0] を参照させるようにするギミックが知りたいのです。よろしくお願いします。

-------------------------------------

int **a;

// 領域の動的確保 ( [12][18] )
...続きを読む

Aベストアンサー

どうしてもp[-3][-4]がa[0][0]を参照するようにしたいのでなければ、次のようにしてはどうでしょう。

-------------------------
int **a;

// 領域の動的確保 ( [12][18] )
a = new int*[12];
for(int i = 0; i < 12; i++)
 a[i] = (new int[18]) + 4; // ← 変更点

int **p;

p = &(a[3]) ;

for (int y=0; y<12;y++)
 for (int x=0; x<18;x++)
  a[y][x] = 1;

p[-3][0] = 99; //a[0][0]が99になる。

//領域の解放
for(int i = 0; i < 12; i++)
 delete [] (a[i] - 4); // ← 変更点

delete [] a;
-------------------------

上のコードでは、p[-3][-4]がa[0][-4]を参照することになりますが、目的は満たせるのではないでしょうか。

どうしてもp[-3][-4]がa[0][0]を参照するようにしたいのでなければ、次のようにしてはどうでしょう。

-------------------------
int **a;

// 領域の動的確保 ( [12][18] )
a = new int*[12];
for(int i = 0; i < 12; i++)
 a[i] = (new int[18]) + 4; // ← 変更点

int **p;

p = &(a[3]) ;

for (int y=0; y<12;y++)
 for (int x=0; x<18;x++)
  a[y][x] = 1;

p[-3][0] = 99; //a[0][0]が99になる。

//領域の解放
for(int i = 0; i < 12; i++)
 delete [] (a[i] - 4); // ← 変更...続きを読む

Q管理者権限を英語で

管理者権限がありません。と英語で表現するにはどういうのが適切でしょうか?

また、IT関連用語の英語を学べるサイトなど教えて頂けないでしょうか?ぜひお願いいたします。

Aベストアンサー

You have no privilege of the administrator.

「あなたはシステム管理者の特権を有しない」

こんな感じではどうでしょうか?

Qchar *name1[4] とchar name2[][4] の違いについて

C言語のことで質問があります。

char *name1[4]は
char *name1[4] = {"abcdefghi","jkl","l","mn"};
と宣言でき,ポインタを4つ確保した形となりました。

char name2[][4]は
char name2[][4] = {"abc","def","ghi","jkl","mno","pqr","stu","vwx"};
と4文字以内の文字列を初期化した数だけ確保した形となりました。

この結果からchar *name1[4]の意味は,char name2[][4]ではなくchar name2[4][]に近いと思いました。
しかし,char name2[4][]ではポインタを4つ確保した事にはならないみたいでコンパイルが通りません。
*name1[4]では4つのポインタを確保できるのに~と思ってしまいます。

ポインタと配列は別物と考えるべきなのでしょうか?
訳の分からない質問かもしれませんが,
何卒ご指導いただくようよろしくお願いします。

Aベストアンサー

ポインタと配列の違いというのは、変数と定数の違いのようなものです。

話を簡単にするために、一次元配列から考えましょう。

char *p1; と定義した時のp1は、いうまでもなくポインタで、
これは変数です。p1は任意の文字列を指すことができます。
char a1[4]; と配列の形で定義した場合のa1については、
a1[0]やa1[1]等を、通常のchar型の変数と全く同じように扱うことが
できます。しかし、a1自体は、例えば a1 = p1; のように値を代入する
ことができません。(逆の p1 = a1; は可能。)つまり、この場合のa1は、
変数ではなく、定数のようなものなのです。

複合的なケースについて見てみましょう。
char **q1; ポインタへのポインタ
 q1,*q1,**q1,q1[0],*q1[0],q1[0][0] のいずれも変数として
 扱うことができます。(値を代入することが文法的に許されます。
 ただし、実行時にはアクセス違反になる場合もあります。)
char q2[4][4]; 二次元配列
 q2,q2[0]は変数として扱うことができません。q2[0][0]のように
 して、初めて変数として扱えるようになります。
char *q3[4]; ポインタの配列
 q3は変数として扱うことができませんが、q3[0],*q3[0],q3[0][0]
 はいずれも変数として扱うことができます。
 なお、この定義は char *(q3[4]); とした場合と全く同じ意味です。
char (*q4)[4]; 配列へのポインタ
 q4,(*q4)[0],q4[0][0]はいずれも変数として扱うことができます。
 しかし、*q4,q4[0]は変数として扱うことができません。

char *name1[4]; と char name2[4][]; は確かに似ています。しかし
違うところもあります。それは、name1[0] が変数として扱えるのに
対し、name2[0] には値を代入できないという点です。(データの
具体的な構造については、inthefloiさんが書いておられる通りです。
> char name2[4][]ではポインタを4つ確保した事にはならないみたい
というのも、全くその通りで、配列の定義では、ポインタ変数の領域
を確保する余地はないのです。

ポインタと配列の違いというのは、変数と定数の違いのようなものです。

話を簡単にするために、一次元配列から考えましょう。

char *p1; と定義した時のp1は、いうまでもなくポインタで、
これは変数です。p1は任意の文字列を指すことができます。
char a1[4]; と配列の形で定義した場合のa1については、
a1[0]やa1[1]等を、通常のchar型の変数と全く同じように扱うことが
できます。しかし、a1自体は、例えば a1 = p1; のように値を代入する
ことができません。(逆の p1 = a1; は可能。)つまり...続きを読む

Q「業務分掌規程」、「職務権限規程」にあたる英語は?

上記規程を英文で作成したいと考えています。
それぞれに対応する英語訳は何になるのでしょうか。
また、それぞれの事例を集めた英文サイトあるいは書籍の
情報がありましたら、教えてください。
よろしくお願いします。

Aベストアンサー

翻訳者です。

「業務分掌規程」:Policies of Dividing Duties
「職務権限規程」:Policies of Administrative Authority

でどうでしょう? 
「規程」(多くの条項で構成される)は、ほとんどの場合
"Rules and Regulations "と訳すことが多いようです。
が、
内容が限定的で条項が少ない場合は、一般的に「規程」ではなく
「規定」と書きますよね?
「業務分掌について」「職務権限について」とかなり内容が絞られて
いるようなので、これらは「規定」="policy"に近いと思います。

サイトや書籍については、すみませんが即答しかねます。

Q[VC++][MFC][SDI]ダイアログコントロールもしくわツールバー!!詰まってます!!

現在VC++6.0でMFCを使いSDIのプログラムを作っているのですが、フォームにダイアログバーを張っています。

これをツールバーのように自由に動かしたり、左右上下にドッキングさせたり。
これって実現可能でしょうか?

色々ためしてみたんですが無理でした。
やっぱ不可能ですかね?

これが無理なんであればデフォルトで作成されるツールバー([新規作成][開く][保存]等が入ってる)にコントロール(ボタンやリストボックス)を追加して使用、と考えているのですがこれも難しい!!!


まだまだ未熟者なのですがどうかご存知の方おられましたらご教授ください!!
よろしくお願いします!!

Aベストアンサー

Dannerです。
参考URL(英語)を載せておきます。

参考URL:http://www.codeguru.com/Cpp/controls/toolbar/placingcontrolsintoolbars/article.php/c2505/

Q翻訳(日本語→英語)お願いいたします。

あるソフトウェアをインストールしました。
その結果をメーカーに英語で回答する必要があるのですが、
英語がまったくダメなため翻訳をお願いできればと思います。

--------------------------------
1)Administrator権限でのインストール ---> 問題なし
2)PC再起動 ---> 問題なし
3)"ソフトウェア"の起動 ---> 問題なし
4)ユーザ権限でのPC再起動 ---> 添付画像のエラー発生

エラーが表示されないようにしてください。
--------------------------------

よろしくお願いいたします。

Aベストアンサー

1. I installed the software with the administrator's permission. No problem, it worked.
2. I restarted my PC. No problem, it was successful.
3. I booted up the software. No problem. It started.
4. By right of the software user, I restarted my PC. Then the attached picture had an err.

I do not want to see the error message. How can I stop to it? Please help me.

以上でいかがでしょうか?

Q[コンパイラ]xpでプログラミングの練習[フリーソフト]

大学でLINUXのemacsでプログラミングの学習をしている者です。

前からXPでそれらの練習やコンパイラに適したソフトが欲しいと思っていたのですが、
何かいいソフト、HPを紹介願えませんか?

どうかよろしくお願いします。

Aベストアンサー

 WindowsでC言語を勉強するなら、例えばコンパイラはフリーの
「Borland C++ Compiler 5.5」
を使用します。
 まず、下記からコンパイラを入手します。

http://www.borland.co.jp/cppbuilder/freecompiler/bcc55download.html

 そして、下記ページなどを参考にしてインストールします。
http://www.chem.scphys.kyoto-u.ac.jp/nonnonWWW/ogawara/lecture/borland.html

 エディッタはメモ帳でも良いですが、TeraPadというフリーソフトがお勧めです。
http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html

 TeraPadをインストール後に、
「表示」→「編集モード」→「C/C++」と
「表示」→「オプション」→「基本」→「オートインデント」
を設定すると使いやすいと思います。
 それでは、C言語の勉強頑張ってください。

参考URL:http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html

 WindowsでC言語を勉強するなら、例えばコンパイラはフリーの
「Borland C++ Compiler 5.5」
を使用します。
 まず、下記からコンパイラを入手します。

http://www.borland.co.jp/cppbuilder/freecompiler/bcc55download.html

 そして、下記ページなどを参考にしてインストールします。
http://www.chem.scphys.kyoto-u.ac.jp/nonnonWWW/ogawara/lecture/borland.html

 エディッタはメモ帳でも良いですが、TeraPadというフリーソフトがお勧めです。
http://www5f.biglobe.ne.jp/~t-susumu/libra...続きを読む


人気Q&Aランキング

おすすめ情報