UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
前スレ
Part9 http://hibari.2ch.net/test/read.cgi/tech/1205795434/
Part8 http://pc11.2ch.net/test/read.cgi/tech/1147946176/
Part7 http://pc8.2ch.net/test/read.cgi/tech/1127373405/
Part6 http://pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html
Part3のミラー
http://makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
http://makimo.to/2ch/pc5_tech/1055/1055110889.html
探検
UNIXプログラミング質問すれ Part10
■ このスレッドは過去ログ倉庫に格納されています
1unco ◆manko/yek.
2011/04/18(月) 17:06:36.77647デフォルトの名無しさん
2014/05/10(土) 20:31:33.38ID:XNOk+z7r648デフォルトの名無しさん
2014/05/10(土) 23:10:22.73ID:eu6ll0of >>647
意味ねーよ、たぶん。
意味ねーよ、たぶん。
649デフォルトの名無しさん
2014/05/11(日) 02:09:06.14ID:8Qasa1hM xinetdなんか使うときにほしいな
650デフォルトの名無しさん
2014/05/12(月) 15:49:13.01ID:iANYuL+Z651デフォルトの名無しさん
2014/05/12(月) 16:42:43.61ID:7oRV1ywD >>650
fdopenでなんとかなるっけ?
fdopenでなんとかなるっけ?
652デフォルトの名無しさん
2014/05/30(金) 18:57:46.01ID:1vuEEnaV OpenBSD の diff コマンドのソースを
src.tar.gz というアーカイブの /usr/bin/diff から持ってきて、
わずかに修正後、cygwin でビルドには成功し、一応動作はするのですが、
「diff: : Cannot allocate memory」
というエラーが二回に一回くらい出ます。「:」は二つです。
これは何が原因で、どうやったら直せますか?
ソースの修正箇所は、__dead
・__dead void usage(void) の __dead が定義されていなかったので、
#define __dead とした。
・fgetln() が宣言されていなかったようなので、
呼び出し箇所を my_fgetln() という名前に変更し、
/* $OpenBSD: util.c,v 1.23 2007/09/17 09:28:36 espie Exp $ */
/* $NetBSD: util.c,v 1.10 1996/12/31 17:56:04 christos Exp $ */
/*
* Copyright (c) 2001 Marc Espie.
*/
/* OPENBSD ORIGINAL: usr.bin/make/util.c */
と書かれた、fgeln() のソースを関数名を my_fgetln()に変更して追加した。
src.tar.gz というアーカイブの /usr/bin/diff から持ってきて、
わずかに修正後、cygwin でビルドには成功し、一応動作はするのですが、
「diff: : Cannot allocate memory」
というエラーが二回に一回くらい出ます。「:」は二つです。
これは何が原因で、どうやったら直せますか?
ソースの修正箇所は、__dead
・__dead void usage(void) の __dead が定義されていなかったので、
#define __dead とした。
・fgetln() が宣言されていなかったようなので、
呼び出し箇所を my_fgetln() という名前に変更し、
/* $OpenBSD: util.c,v 1.23 2007/09/17 09:28:36 espie Exp $ */
/* $NetBSD: util.c,v 1.10 1996/12/31 17:56:04 christos Exp $ */
/*
* Copyright (c) 2001 Marc Espie.
*/
/* OPENBSD ORIGINAL: usr.bin/make/util.c */
と書かれた、fgeln() のソースを関数名を my_fgetln()に変更して追加した。
653デフォルトの名無しさん
2014/05/30(金) 19:05:18.54ID:1vuEEnaV なお、diffのソース・フォルダで"Cannot" "allocate" "memory" と
いうキーワードを検索してみましたが、違うキーワードが含まれた
別の文字列の一部として存在しているだけでした。
「diff」という文字列を誰がどうやって表示しているのかさえ分かり
ません。__FILE__ マクロも検索してみましたが、見つかりません
でした。
いうキーワードを検索してみましたが、違うキーワードが含まれた
別の文字列の一部として存在しているだけでした。
「diff」という文字列を誰がどうやって表示しているのかさえ分かり
ません。__FILE__ マクロも検索してみましたが、見つかりません
でした。
654デフォルトの名無しさん
2014/05/30(金) 19:10:41.56ID:SSvUP3u/ argv[0]
655デフォルトの名無しさん
2014/05/30(金) 19:31:55.39ID:1vuEEnaV main() 関数の冒頭で、
{
char **oargv; // main のローカル変数
oargv = argv;
while ((ch = getopt_long(argc, argv, OPTIONS, longopts, NULL)) != -1) {
・・・
lastch = ch;
newarg = optind != prevoptind;
prevoptind = optind;
}
argc -= optind;
argv += optind;
・・・
set_argstr(oargv, argv);
・・・
}
のようになっており、oargv は上記以外では参照されておらず、
argv[0]を参照できる可能性が有るとすれば、
getopt_long() と set_argstr()
しかないようです。
これらの関数のうちどちらかが、メッセージを出しているのでしょうか?
{
char **oargv; // main のローカル変数
oargv = argv;
while ((ch = getopt_long(argc, argv, OPTIONS, longopts, NULL)) != -1) {
・・・
lastch = ch;
newarg = optind != prevoptind;
prevoptind = optind;
}
argc -= optind;
argv += optind;
・・・
set_argstr(oargv, argv);
・・・
}
のようになっており、oargv は上記以外では参照されておらず、
argv[0]を参照できる可能性が有るとすれば、
getopt_long() と set_argstr()
しかないようです。
これらの関数のうちどちらかが、メッセージを出しているのでしょうか?
656デフォルトの名無しさん
2014/05/30(金) 20:04:01.04ID:SSvUP3u/ 餅は餅屋
cygwinはcygwinから
cygwinはcygwinから
657デフォルトの名無しさん
2014/05/31(土) 07:45:18.26ID:6bjDZoIF OpenBSDのdiffソースをもってきた理由は、ライセンスの問題からです。
ところで、エラーの原因が判明しました。
set_argstr()の中で、argsize が負の値になり、xmalloc(argsize)
が内部で呼び出しているmalloc(argsize)に失敗し、err(2,NULL) を呼び、
err()が、malloc()が設定したグローバル変数 errno に応じたメッセージ
として「Cannot allocate memory」を出していたのでした。
なお、set_argstr(av,ave)のavには、main() に渡された状態の argv がそのまま
渡され、ave には、-オプションを除いた後にあるファイル名まで移動したargvの
値が渡されています。
どうも、OpenBSD では、argv[k] が、0終端文字列が隙間無く並べら
れている性質を利用しているようです。
argv[0],argv[1],argv[2],…
"cmd名",0,"-opt1",0,"-opt2",0,…,"file1",0,"file2",0
途中の 0x00 を0x20(空白)に置き換えるだけなので、argsize は、
そのままのバイト数で良いからこのようなコードになっている
ようです。4足しているのは"diff"という文字列のバイト数の分のようです。
ところで、エラーの原因が判明しました。
set_argstr()の中で、argsize が負の値になり、xmalloc(argsize)
が内部で呼び出しているmalloc(argsize)に失敗し、err(2,NULL) を呼び、
err()が、malloc()が設定したグローバル変数 errno に応じたメッセージ
として「Cannot allocate memory」を出していたのでした。
なお、set_argstr(av,ave)のavには、main() に渡された状態の argv がそのまま
渡され、ave には、-オプションを除いた後にあるファイル名まで移動したargvの
値が渡されています。
どうも、OpenBSD では、argv[k] が、0終端文字列が隙間無く並べら
れている性質を利用しているようです。
argv[0],argv[1],argv[2],…
"cmd名",0,"-opt1",0,"-opt2",0,…,"file1",0,"file2",0
途中の 0x00 を0x20(空白)に置き換えるだけなので、argsize は、
そのままのバイト数で良いからこのようなコードになっている
ようです。4足しているのは"diff"という文字列のバイト数の分のようです。
658デフォルトの名無しさん
2014/05/31(土) 07:46:03.82ID:6bjDZoIF 【修正前】
void set_argstr(char **av, char **ave)
{
size_t argsize;
char **ap;
argsize = 4 + *ave - *av + 1;
diffargs = xmalloc(argsize);
strlcpy(diffargs, "diff", argsize);
for (ap = av + 1; ap < ave; ap++) {
if (strcmp(*ap, "--") != 0) {
strlcat(diffargs, " ", argsize);
strlcat(diffargs, *ap, argsize);
}
}
}
void set_argstr(char **av, char **ave)
{
size_t argsize;
char **ap;
argsize = 4 + *ave - *av + 1;
diffargs = xmalloc(argsize);
strlcpy(diffargs, "diff", argsize);
for (ap = av + 1; ap < ave; ap++) {
if (strcmp(*ap, "--") != 0) {
strlcat(diffargs, " ", argsize);
strlcat(diffargs, *ap, argsize);
}
}
}
659デフォルトの名無しさん
2014/05/31(土) 07:46:54.80ID:6bjDZoIF 【修正後】
void set_argstr(char **av, char **ave)
{
size_t argsize;
char **ap;
argsize = 4; // "diff" 文字列の長さ
for (ap = av + 1; ap < ave; ap++) {
argsize += 1 + strlen( *ap ); // 間の空白 + 引数の文字数
}
argsize++; // 最後の NUL終端文字列
diffargs = xmalloc(argsize);
strlcpy(diffargs, "diff", argsize);
for (ap = av + 1; ap < ave; ap++) {
if (strcmp(*ap, "--") != 0) {
strlcat(diffargs, " ", argsize);
strlcat(diffargs, *ap, argsize);
}
}
}
void set_argstr(char **av, char **ave)
{
size_t argsize;
char **ap;
argsize = 4; // "diff" 文字列の長さ
for (ap = av + 1; ap < ave; ap++) {
argsize += 1 + strlen( *ap ); // 間の空白 + 引数の文字数
}
argsize++; // 最後の NUL終端文字列
diffargs = xmalloc(argsize);
strlcpy(diffargs, "diff", argsize);
for (ap = av + 1; ap < ave; ap++) {
if (strcmp(*ap, "--") != 0) {
strlcat(diffargs, " ", argsize);
strlcat(diffargs, *ap, argsize);
}
}
}
660デフォルトの名無しさん
2014/05/31(土) 07:52:02.32ID:6bjDZoIF なお、エラー表示に「diff」が表示されているのは、argv[0]を使って
いるわけではなく、ライブラリの err() 関数が自分でやってるんですね。
av に argv が渡されているので混乱しそうですが、たまたまです。
いるわけではなく、ライブラリの err() 関数が自分でやってるんですね。
av に argv が渡されているので混乱しそうですが、たまたまです。
661デフォルトの名無しさん
2014/05/31(土) 10:56:57.68ID:DtdLdmhz ううむ。確かに試してみるとcygwinのargv[n]はバラバラなアドレスだな
662デフォルトの名無しさん
2014/05/31(土) 14:38:59.00ID:iRT5FyvM この糞なdiffのコードはargvがらみ以外にも地雷がたくさんありそう。
argvがらみでも/usr/bin/diffがargv[0]に渡されたらダメなんじゃないか?
4ってmagic numberが糞だから。
>>661
連続してることに依存したコードは糞。
argvがらみでも/usr/bin/diffがargv[0]に渡されたらダメなんじゃないか?
4ってmagic numberが糞だから。
>>661
連続してることに依存したコードは糞。
663デフォルトの名無しさん
2014/06/01(日) 00:52:00.45ID:MxSjB8Q5 >>662
なぜダメ?ソース見て言ってる?
なぜダメ?ソース見て言ってる?
664デフォルトの名無しさん
2014/06/01(日) 00:57:21.10ID:MxSjB8Q5 というか、これぐらいで糞糞って言ってるのは初心者なんだろうな
665デフォルトの名無しさん
2014/06/01(日) 02:19:51.86ID:e/SJ8pUJ666652
2014/06/01(日) 13:29:53.55ID:uUGuheMf OpenBSD の diff ソースは、本質的に複雑な処理の割にはソースが驚くほど
短いです。正直言って、腕のよさを感じました。ソースは:
diff.c 11KB
diffdir.c 7KB
diffreg.c 39KB
xmalloc.c 3KB
の4つしかソースが無く、本質的には、diffreg.c のみの 1522 行しか
ありません。こんなに簡潔に書ける人は、世界でも余りいないのではない
でしょうか?
ただし、
・複数の変数を同一行でカンマで区切って宣言している。
・ローカル変数の名称には1文字など、とても短い物が多い。
・if () で処理が一行の場合、ブロック {} にせずに書いてある。
・空行が少ない。
などの特徴があります。
短いです。正直言って、腕のよさを感じました。ソースは:
diff.c 11KB
diffdir.c 7KB
diffreg.c 39KB
xmalloc.c 3KB
の4つしかソースが無く、本質的には、diffreg.c のみの 1522 行しか
ありません。こんなに簡潔に書ける人は、世界でも余りいないのではない
でしょうか?
ただし、
・複数の変数を同一行でカンマで区切って宣言している。
・ローカル変数の名称には1文字など、とても短い物が多い。
・if () で処理が一行の場合、ブロック {} にせずに書いてある。
・空行が少ない。
などの特徴があります。
667デフォルトの名無しさん
2014/06/01(日) 15:42:24.51ID:fiMuA4/7668652
2014/06/01(日) 18:18:52.63ID:uUGuheMf このdiffに関して、プログラミング技術の秀逸さ以外にソースが
短い理由があるとする666に書いたことに加えて、
・getopt() を使ってオプションの処理が短く出来ている。
・pread() を使って、lseek(), read()に分けずに書けている。
・正規表現ライブラリを使っている。
・fnmatch()なるワイルドカード式のパターンマッチテストを
使っている。
もあるようです。
短い理由があるとする666に書いたことに加えて、
・getopt() を使ってオプションの処理が短く出来ている。
・pread() を使って、lseek(), read()に分けずに書けている。
・正規表現ライブラリを使っている。
・fnmatch()なるワイルドカード式のパターンマッチテストを
使っている。
もあるようです。
669652
2014/06/01(日) 18:20:16.83ID:uUGuheMf670652
2014/06/01(日) 18:38:13.52ID:uUGuheMf さらに:
・goto 文を使っている。
・goto 文を使っている。
671デフォルトの名無しさん
2014/06/03(火) 06:34:30.54ID:mwJyftym gotoは、finallyの代わりに、エラー処理で使う場合や、
2重ループを一気に抜け出す場合はOK
2重ループを一気に抜け出す場合はOK
672デフォルトの名無しさん
2014/08/05(火) 09:27:23.16ID:wh+qTY5L MonoBehaviourの読み方が気になってプログラミングに集中できません
どなたか教えて下さい!
どなたか教えて下さい!
673デフォルトの名無しさん
2014/08/05(火) 13:21:49.58ID:AfbB56Nf モゥノゥ・ビヘイヴュア
674デフォルトの名無しさん
2014/08/05(火) 13:24:41.41ID:AfbB56Nf 英和辞書の発音記号を見ればいいだろう
675デフォルトの名無しさん
2014/08/05(火) 13:37:09.15ID:v4Qe9qZY >>672
今頃気がついたが、
ここはUnixプログラミング質問スレであって
Unityプログラミング質問スレじゃねぇ!wwww
今頃気がついたが、
ここはUnixプログラミング質問スレであって
Unityプログラミング質問スレじゃねぇ!wwww
676デフォルトの名無しさん
2014/08/05(火) 17:46:28.53ID:X8aW0ARF 分かりづらいボケだな 嫌いじゃない
677デフォルトの名無しさん
2014/08/06(水) 22:36:42.77ID:ZYxq9t1Q /tmp/test/下に20140801.txt〜20140805.txt
があるときに以下のシェルを流すと
------------------------------
#!/bin/sh
files="/tmp/test/"
for a in {20140801,20140806}
do
for filepath in ${files}*${a}*
do
echo ${filepath}
done
done
------------------------------
/tmp/test/20140801.txt
/tmp/test/*20140806*
と表示されてしまいます。
20140806.txtは存在しないので
/tmp/test/*20140806*
が表示される理由が分かりません。
これを表示しないようにしたいのですが、
if文で存在確認するくらいしかないでしょうか?
があるときに以下のシェルを流すと
------------------------------
#!/bin/sh
files="/tmp/test/"
for a in {20140801,20140806}
do
for filepath in ${files}*${a}*
do
echo ${filepath}
done
done
------------------------------
/tmp/test/20140801.txt
/tmp/test/*20140806*
と表示されてしまいます。
20140806.txtは存在しないので
/tmp/test/*20140806*
が表示される理由が分かりません。
これを表示しないようにしたいのですが、
if文で存在確認するくらいしかないでしょうか?
678デフォルトの名無しさん
2014/08/06(水) 23:31:46.47ID:XlJsEfbX コマンドライン展開じゃないから
for filepath in ${files}*${a}*
のin句にテキストとして ${files}*${a}* の結果として "/tmp/test/*20140806*"が展開されているだけじゃないの?
for filepath in ${files}*${a}*
のin句にテキストとして ${files}*${a}* の結果として "/tmp/test/*20140806*"が展開されているだけじゃないの?
679デフォルトの名無しさん
2014/08/06(水) 23:44:01.31ID:ZYxq9t1Q >>678
なるほど。コマンドライン展開したらできました。
ありがとうございます。
------------------------------
!/bin/sh
files="/tmp/test/"
for a in {20140801,20140806}
do
for filepath in `find ${files} -name ${a}*`
do
echo ${filepath}
done
done
------------------------------
なるほど。コマンドライン展開したらできました。
ありがとうございます。
------------------------------
!/bin/sh
files="/tmp/test/"
for a in {20140801,20140806}
do
for filepath in `find ${files} -name ${a}*`
do
echo ${filepath}
done
done
------------------------------
680デフォルトの名無しさん
2014/08/06(水) 23:47:40.87ID:JVlCh9Ly *は何もマッチしないときはそのまま*になる。
一般的には、確かに、ファイルの存在確認をするとかになるんじゃ。
シェルによっては*の挙動を変えられたはず。
一般的には、確かに、ファイルの存在確認をするとかになるんじゃ。
シェルによっては*の挙動を変えられたはず。
681デフォルトの名無しさん
2014/08/07(木) 00:09:15.66ID:mcWZAFW+682デフォルトの名無しさん
2014/08/07(木) 00:35:24.70ID:WSmP9CNZ 天才のみなさん教えてください。
「fork」した子プロセスで「popen」したのですが、「pclose」で終えると、「errno」に「29(ESPIPE)」が設定されていました。
以降の処理では前出のエラーによる影響は無く、正常に終了しているに見えるのですが、
子プロセスで「popen」は使用するべきではないのでしょうか?
ご教示お願いいたします。
「fork」した子プロセスで「popen」したのですが、「pclose」で終えると、「errno」に「29(ESPIPE)」が設定されていました。
以降の処理では前出のエラーによる影響は無く、正常に終了しているに見えるのですが、
子プロセスで「popen」は使用するべきではないのでしょうか?
ご教示お願いいたします。
683デフォルトの名無しさん
2014/08/07(木) 01:51:37.36ID:QaqdPvt4 error 29 espipe
ttp://docs.oracle.com/cd/E19455-01/806-2720/x-94fni/index.html
lseek(2)はパイプに対して使えないので、
一旦ファイルに書き込んでから、そのファイルに対して使う
ttp://docs.oracle.com/cd/E19455-01/806-2720/x-94fni/index.html
lseek(2)はパイプに対して使えないので、
一旦ファイルに書き込んでから、そのファイルに対して使う
684デフォルトの名無しさん
2014/08/07(木) 09:06:04.03ID:gf97lcsK685682
2014/08/07(木) 10:21:02.27ID:Nj16SWmn686デフォルトの名無しさん
2014/08/07(木) 11:01:30.95ID:56isn469 >>685
どちらも問題ない
どちらも問題ない
687682
2014/08/07(木) 11:58:56.21ID:Nj16SWmn >>686
ありがとうございました。
ありがとうございました。
688デフォルトの名無しさん
2014/08/07(木) 14:54:41.05ID:FIDAVWXd 恐ろしい罠だった
689デフォルトの名無しさん
2014/08/08(金) 00:48:08.28ID:W2uIddTc 正常終了した後に、errnoを見たの?
何じゃそれ!
何じゃそれ!
690デフォルトの名無しさん
2014/08/09(土) 11:23:56.87ID:B1dFLZrJ 正常終了したときもerrnoセットしろよ
何のためのE_OKだよ殺すぞクソが
と思ったことはあるのでバカにしたりしない。
何のためのE_OKだよ殺すぞクソが
と思ったことはあるのでバカにしたりしない。
691デフォルトの名無しさん
2014/08/09(土) 11:37:13.03ID:Mi20wbO0 どんなコード書いてるのかな?
692デフォルトの名無しさん
2014/08/12(火) 06:15:41.33ID:7nSDT24w try{
ここでエラーが発生した時のみ、errnoを設定し、catchへ飛ぶ
}catch{
ここでerrnoを参照
}
C++風に表現すれば、正常時にはerrnoは設定されていないし、
catchブロックも通らないから、errnoを参照できない
ここでエラーが発生した時のみ、errnoを設定し、catchへ飛ぶ
}catch{
ここでerrnoを参照
}
C++風に表現すれば、正常時にはerrnoは設定されていないし、
catchブロックも通らないから、errnoを参照できない
693デフォルトの名無しさん
2014/08/12(火) 17:15:08.49ID:hsJ6ic3B694デフォルトの名無しさん
2014/08/13(水) 10:46:20.48ID:03jARyf4 if(result==1)result=errno;
みたいに正規化してから処理るといいよ
みたいに正規化してから処理るといいよ
695デフォルトの名無しさん
2014/08/13(水) 10:49:25.22ID:03jARyf4 マイナス書き忘れた
まあいいや
まあいいや
696デフォルトの名無しさん
2014/08/20(水) 06:24:54.38ID:L79Zu2V+697デフォルトの名無しさん
2014/09/01(月) 11:59:31.72ID:5QQ1Caz+ Xlibについて質問します。
ウィンドウ・マネージャを使用する一般的な環境では、ウィンドウの淵をドラッグすると
ConfigureNotifyを受け取ることができます。
ところで、ドラッグの開始と終了を知ることができる通知は受けられますか?
Win32APIで言うところのWM_ENTERSIZEMOVEとWM_EXITSIZEMOVEに相当するものを
探しています。
あるいは何らかの方法で知ることは出来ますか?
よろしくおねがいします。
ウィンドウ・マネージャを使用する一般的な環境では、ウィンドウの淵をドラッグすると
ConfigureNotifyを受け取ることができます。
ところで、ドラッグの開始と終了を知ることができる通知は受けられますか?
Win32APIで言うところのWM_ENTERSIZEMOVEとWM_EXITSIZEMOVEに相当するものを
探しています。
あるいは何らかの方法で知ることは出来ますか?
よろしくおねがいします。
698デフォルトの名無しさん
2014/09/09(火) 23:38:03.45ID:/ZjY2rNK xlibにdragなんて高級なイベントはないです。
自分でdragと何であるか定義して、そのように自分で書いたコードで解釈してください。
自分でdragと何であるか定義して、そのように自分で書いたコードで解釈してください。
699デフォルトの名無しさん
2014/09/10(水) 21:03:14.76ID:zerYkwqt よく知らんけどDNDを使うらしい
もちろんツールキットならドラッグ&ドロップサポートしてる思うが
もちろんツールキットならドラッグ&ドロップサポートしてる思うが
700デフォルトの名無しさん
2014/12/23(火) 17:29:19.99ID:BQHHJ9UZ ところで、viってなんであんなに変態的な操作感なんでしょうか?
701デフォルトの名無しさん
2014/12/23(火) 18:48:55.43ID:g0vcdaad ところで、emacsってなんであんなに変態的な操作感なんでしょうか?
702デフォルトの名無しさん
2014/12/23(火) 18:52:34.58ID:SVPjuZy1 カスタムできるんだから、設定した、またはしてない自分が変態ってことだ。
703デフォルトの名無しさん
2014/12/23(火) 19:03:45.03ID:BQHHJ9UZ ただのカーソル移動のためにESCでコマンドモードに戻る必要がある点が
素晴らしく変態的だと感じるのですが、皆さんのご感想はいかがでしょうか?
素晴らしく変態的だと感じるのですが、皆さんのご感想はいかがでしょうか?
704デフォルトの名無しさん
2014/12/23(火) 19:06:48.73ID:BQHHJ9UZ 今、あらためてviをものすごく久しぶりに使ってみたのですが、
insertモードで普通にカーソルキーでカーソル移動できますねw
行追加や行削除もできちゃいます
これならいいっすw
勘違いだったのかなぁ。。前はもっと使いにくかった気がしたのですが。
insertモードで普通にカーソルキーでカーソル移動できますねw
行追加や行削除もできちゃいます
これならいいっすw
勘違いだったのかなぁ。。前はもっと使いにくかった気がしたのですが。
705デフォルトの名無しさん
2014/12/23(火) 19:15:34.69ID:1AeA5HA2706デフォルトの名無しさん
2014/12/23(火) 19:25:20.96ID:BQHHJ9UZ >>705
すみません、いちおうvimです
触ってみたのはVIM 7.3です
ちょっと懐かしくなっていろいろいじり始めたのですが、
Windows Tera termのssh経由だと、挙動が違って、insertモードで
カーソルキーが効かなかったり(AとかBとか入力される)
文字が消せなかったり
前経験したイケてない感じに似てます
すみません、いちおうvimです
触ってみたのはVIM 7.3です
ちょっと懐かしくなっていろいろいじり始めたのですが、
Windows Tera termのssh経由だと、挙動が違って、insertモードで
カーソルキーが効かなかったり(AとかBとか入力される)
文字が消せなかったり
前経験したイケてない感じに似てます
707デフォルトの名無しさん
2014/12/23(火) 22:25:53.16ID:u51zFo5t >>706 ひょっとすると :set nocompatible でなおったりしませんか(自信ないけど)?
// ノーマルモードに戻ったほうが単語単位とかいろんな動き方ができて結局有利
// ノーマルモードに戻ったほうが単語単位とかいろんな動き方ができて結局有利
708デフォルトの名無しさん
2014/12/23(火) 22:34:24.66ID:BQHHJ9UZ709デフォルトの名無しさん
2014/12/23(火) 22:39:03.14ID:BQHHJ9UZ710デフォルトの名無しさん
2014/12/24(水) 11:12:32.34ID:Mlxryodi >>708-709 おおそれはなによりです。vimrc 作っとくとそれだけで自動的に nocompatible になるので便利
ハッピークリスマス!
ハッピークリスマス!
711デフォルトの名無しさん
2015/02/04(水) 04:25:26.78ID:2A4M88bu MacOS X 10.8.5でpollがうまく動作せず、困っています。
lessなどのpagerで、標準入力をpipeからttyに切り替えるために、
/dev/ttyをstdinにdupする処理をしていますが、Macではその後の
stdinに対する有限時間のpollがタイムアウトしなくなります。
サンプルコードはこんな感じです。
#include <fcntl.h>
#include <poll.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main() {
char *ttyold, *ttynew;
int fd;
struct pollfd pfd[1];
ttyold = strdup(ttyname(STDIN_FILENO));
fd = open("/dev/tty", O_RDONLY);
dup2(fd, STDIN_FILENO);
close(fd);
ttynew = strdup(ttyname(STDIN_FILENO));
printf("old:%s, new:%s\n", ttyold, ttynew);
pfd[0].fd = STDIN_FILENO;
pfd[0].events = POLLIN;
if (poll(pfd, 1, 1000) == 0)
printf("timeout\n");
return 0;
}
lessなどのpagerで、標準入力をpipeからttyに切り替えるために、
/dev/ttyをstdinにdupする処理をしていますが、Macではその後の
stdinに対する有限時間のpollがタイムアウトしなくなります。
サンプルコードはこんな感じです。
#include <fcntl.h>
#include <poll.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main() {
char *ttyold, *ttynew;
int fd;
struct pollfd pfd[1];
ttyold = strdup(ttyname(STDIN_FILENO));
fd = open("/dev/tty", O_RDONLY);
dup2(fd, STDIN_FILENO);
close(fd);
ttynew = strdup(ttyname(STDIN_FILENO));
printf("old:%s, new:%s\n", ttyold, ttynew);
pfd[0].fd = STDIN_FILENO;
pfd[0].events = POLLIN;
if (poll(pfd, 1, 1000) == 0)
printf("timeout\n");
return 0;
}
712711
2015/02/04(水) 04:26:55.16ID:2A4M88bu (承前)
NetBSD, FreeBSD, Linux, Solarisでは1秒間でタイムアウトします。
BSDとLinuxでは/dev/ttyをオープンすると、実際に使用中のttyを
開きますが、MacとSolarisは/dev/ttyそのものがopenされるようです。
Mac上で/dev/ttyではなく、元のttyデバイスを明示的にopenして
stdinにdupすると、pollはタイムアウトするようになります。
これはOS Xのバグでしょうか?
NetBSD, FreeBSD, Linux, Solarisでは1秒間でタイムアウトします。
BSDとLinuxでは/dev/ttyをオープンすると、実際に使用中のttyを
開きますが、MacとSolarisは/dev/ttyそのものがopenされるようです。
Mac上で/dev/ttyではなく、元のttyデバイスを明示的にopenして
stdinにdupすると、pollはタイムアウトするようになります。
これはOS Xのバグでしょうか?
713デフォルトの名無しさん
2015/02/04(水) 09:47:00.99ID:mVJhw09N 仕様ですbyステーブンス
714デフォルトの名無しさん
2015/02/04(水) 11:48:47.58ID:kErMECZ6 杜撰です
に見えた
に見えた
715デフォルトの名無しさん
2015/02/04(水) 13:52:16.28ID:5pZRcUKP >>712
拝承です
拝承です
716デフォルトの名無しさん
2015/02/07(土) 12:58:19.68ID:quWAAr+b 日立社員乙
717デフォルトの名無しさん
2015/03/04(水) 20:53:07.73ID:9LdtcOdt カレントディレクトリに hoge, text のディレクトリがあって
サブディレクトリも含めて hoge の中にある拡張子 .txt ファイルを text に移動させるシェルスクリプトはどう書くのでしょうか?
サブディレクトリも含めて hoge の中にある拡張子 .txt ファイルを text に移動させるシェルスクリプトはどう書くのでしょうか?
718デフォルトの名無しさん
2015/03/04(水) 21:51:25.04ID:XBVr1uxu720デフォルトの名無しさん
2015/04/29(水) 20:52:13.95ID:1t7Idot8 Cのソケットって皆さん暗記してますか?
それともマニュアル見ながらですか?
それともマニュアル見ながらですか?
721デフォルトの名無しさん
2015/04/29(水) 22:53:40.05ID:NGuLNLKb722デフォルトの名無しさん
2015/04/30(木) 04:30:00.02ID:zG7Mey9s723片山博文MZ ◆T6xkBnTXz7B0
2015/06/25(木) 18:04:11.58ID:L8cWAkwK Linuxプログラミング初心者の片山博文MZです。X11のことですが、
XImageとPixmapの使い分けがわかりません。なぜ2つあるのでしょう。
XImageとPixmapの使い分けがわかりません。なぜ2つあるのでしょう。
724デフォルトの名無しさん
2015/06/25(木) 18:50:05.13ID:5PWcDoqN C/SのCにあるかSにあるかが違うみたいですが。
昔は大きな違いだったんじゃないでしょうか。
昔は大きな違いだったんじゃないでしょうか。
725片山博文MZ ◆T6xkBnTXz7B0
2015/07/05(日) 11:04:38.55ID:w9v3Eza+ XImageはクライアントらしいね。
Ubuntuのapt-getは、死んでんのか?
Xlibがインストールできない。。。
Ubuntuのapt-getは、死んでんのか?
Xlibがインストールできない。。。
726片山博文MZ ◆T6xkBnTXz7B0
2015/07/05(日) 11:15:36.41ID:w9v3Eza+ サポートが切れてた。また、インストールやり直しか。。。
http://www.ubuntulinux.jp/ubuntu
http://www.ubuntulinux.jp/ubuntu
727片山博文MZ ◆T6xkBnTXz7B0
2015/07/12(日) 22:29:58.75ID:KwHbB7ws X11プログラミング始めました。
728デフォルトの名無しさん
2015/07/13(月) 07:57:19.32ID:iSxMMSf8 日記はブログかツイッターで
729デフォルトの名無しさん
2015/07/13(月) 08:22:17.26ID:JZVSQPVK かたやま君って何歳?
もしかして50台?
QZさんと同じ人?
もしかして50台?
QZさんと同じ人?
730デフォルトの名無しさん
2015/07/13(月) 10:01:58.81ID:eqkpY97O 「体液取引所」は、体液を取引できるサービスです。
ttp://katahiromz.esy.es/taieki/
ttp://katahiromz.esy.es/taieki/
731デフォルトの名無しさん
2015/07/13(月) 10:41:27.79ID:ehCb8x0b 今の時代に生X11のプログラミング?
そんなわけないから新しいフレームワーク作るのかな?
それともネット越しでも使えるってのを前提に何か考えてるのかな?
そんなわけないから新しいフレームワーク作るのかな?
それともネット越しでも使えるってのを前提に何か考えてるのかな?
732デフォルトの名無しさん
2015/07/13(月) 11:24:12.72ID:+NoacgtO 21世紀版X11toolkit
http://katahiromz.web.fc2.com/xtk/
http://katahiromz.web.fc2.com/xtk/
733片山博文MZ ◆T6xkBnTXz7B0
2015/07/13(月) 21:21:53.11ID:VD4KavgG まず最初にXサーバーに接続するためにXOpenDisplayする。最後にXCloseDisplayする。
Display *dpy = XOpenDisplay(NULL);
...
XCloseDisplay(dpy);
DefaultRootWindow(dpy)でルートウィンドウが取得できる。
WindowもPixmapも描画可能なDrawableである。
Display *dpy = XOpenDisplay(NULL);
...
XCloseDisplay(dpy);
DefaultRootWindow(dpy)でルートウィンドウが取得できる。
WindowもPixmapも描画可能なDrawableである。
734デフォルトの名無しさん
2015/07/13(月) 21:23:12.79ID:RYeBYa4U 馬鹿か
735片山博文MZ ◆T6xkBnTXz7B0
2015/07/13(月) 22:19:12.31ID:VD4KavgG 標準のXImageは自由すぎて扱いづらい。いちいち確認に時間が掛かりそう
736片山博文MZ ◆T6xkBnTXz7B0
2015/07/13(月) 22:31:16.38ID:VD4KavgG 今、画像処理ライブラリー「imaio」の移植をしようとしている。GTKじゃなくて生のX11じゃないといけないんだ。
738片山博文MZ ◆T6xkBnTXz7B0
2015/07/14(火) 16:26:21.63ID:2KYZ+h7+ X11とWin32ではイベント駆動モデルが異なるので、X11アプリをWin32アプリに変換するためには、
その相違点を吸収する必要がある。Win32ではウィンドウプロシージャーがあるが、X11にはない。
その相違点を吸収する必要がある。Win32ではウィンドウプロシージャーがあるが、X11にはない。
739デフォルトの名無しさん
2015/07/14(火) 17:13:59.78ID:zEVZr7+g 変態馬鹿アゲ
740片山博文MZ ◆T6xkBnTXz7B0
2015/07/15(水) 20:18:59.14ID:OqXQaHQl plain X11の主要なアプリはWin32への移植がほとんど完了している。
xeyes,xlogo,xclock,xcalc,tgif,gnuplot,xdvi,xgraph,xfig,xv,kterm。
Cygwin経由による移植、独自パッチによる移植、1からの作り直しなど。
しかし移植に労力が掛かることから、「アプリの変換」を可能にすることが望ましい。
xeyes,xlogo,xclock,xcalc,tgif,gnuplot,xdvi,xgraph,xfig,xv,kterm。
Cygwin経由による移植、独自パッチによる移植、1からの作り直しなど。
しかし移植に労力が掛かることから、「アプリの変換」を可能にすることが望ましい。
741片山博文MZ ◆T6xkBnTXz7B0
2015/07/17(金) 18:18:50.94ID:Ifv8D+/7 古いソースは、真っ黒ウィンドウを表示するだけで正しく動かないな。
イベントを正しく処理しないと。
イベントを正しく処理しないと。
742片山博文MZ ◆T6xkBnTXz7B0
2015/07/17(金) 19:01:57.98ID:Ifv8D+/7 X11は、const付いてないのが当たり前なのか。。。古いシステムだからか
743デフォルトの名無しさん
2015/07/17(金) 19:12:57.88ID:8d86NFzu 自分のブログでやれよ
744片山博文MZ ◆T6xkBnTXz7B0
2015/07/27(月) 21:59:30.83ID:reKlkB8o X11でカラーピックスマップをマスクする方法を知ってる人は居ませんか?
745デフォルトの名無しさん
2015/07/27(月) 22:13:52.80ID:pfFqoABP いません
746デフォルトの名無しさん
2015/07/27(月) 22:55:54.80ID:gBgTtjsa 今N88BASICをUNIXに移植しています
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【文春】永野芽郁(25)&田中圭(40)燃え上がる不倫LINE ★22 [Ailuropoda melanoleuca★]
- 【サッカー】UEFA-CL準決勝第2戦 PSG×アーセナル [久太郎★]
- 永野芽郁「一部報道にあるやり取りはしていない」所属事務所が「本人に確認」改めて「交際等の事実はない」★7 [ひかり★]
- 【栃木】全生徒が徹夜で歩く85キロ強歩→35キロに短縮 大田原高校の伝統行事、負担増で [ぐれ★]
- 《なぜ流出?》永野芽郁&田中圭 “手つなぎ写真”の次は“親密LINE”報道で高まる「流出元の謎」への疑問 [阿弥陀ヶ峰★]
- 【陰謀論】「ファクトチェック後進国」日本に変化の兆し 兵庫県知事選きっかけに全国の新聞社が始めた試み [ぐれ★]
- うどんにマヨネーズは合うのかな
- 【悲報】ケンモメンなら絶対"8"を選ぶ大阪のソフトテニス部のJKが可愛すぎるwwwwwwwwwwwwwwwwww [904880432]
- __インド陸軍の新兵に対する体力基準:睾丸の大きさをチェック [827565401]
- ログイン「メールにパスワード送ったから入力して」俺「わかった」
- アメ車の税金127,600円wwwwwwwwwwwwwwwwwwwwwwww
- 【悲報】X松、限界突破wwwwww [394133584]