X

UNIXプログラミング質問すれ Part10

■ このスレッドは過去ログ倉庫に格納されています
2011/04/18(月) 17:06:36.77
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 ;
2014/05/10(土) 20:31:33.38ID:XNOk+z7r
>>646
ソケットやシリアルのディスクリプタを引数として
なんか通信して処理する関数があるとするじゃろ?

それに「標準入出力」を渡してTESUTOとかしたいのじゃ。
2014/05/10(土) 23:10:22.73ID:eu6ll0of
>>647
意味ねーよ、たぶん。
2014/05/11(日) 02:09:06.14ID:8Qasa1hM
xinetdなんか使うときにほしいな
2014/05/12(月) 15:49:13.01ID:iANYuL+Z
>>649
それは、stdin, stdoutにこだわらなければ、fdopenでなんとかなるしな。
>>647
テスト時はmainで切り替えるのも結構簡単。
2014/05/12(月) 16:42:43.61ID:7oRV1ywD
>>650
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()に変更して追加した。
653デフォルトの名無しさん
垢版 |
2014/05/30(金) 19:05:18.54ID:1vuEEnaV
なお、diffのソース・フォルダで"Cannot" "allocate" "memory" と
いうキーワードを検索してみましたが、違うキーワードが含まれた
別の文字列の一部として存在しているだけでした。

「diff」という文字列を誰がどうやって表示しているのかさえ分かり
ません。__FILE__ マクロも検索してみましたが、見つかりません
でした。
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()
しかないようです。

これらの関数のうちどちらかが、メッセージを出しているのでしょうか?
2014/05/30(金) 20:04:01.04ID:SSvUP3u/
餅は餅屋
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"という文字列のバイト数の分のようです。
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);
}
}
}
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);
}
}
}
660デフォルトの名無しさん
垢版 |
2014/05/31(土) 07:52:02.32ID:6bjDZoIF
なお、エラー表示に「diff」が表示されているのは、argv[0]を使って
いるわけではなく、ライブラリの err() 関数が自分でやってるんですね。

av に argv が渡されているので混乱しそうですが、たまたまです。
2014/05/31(土) 10:56:57.68ID:DtdLdmhz
ううむ。確かに試してみるとcygwinのargv[n]はバラバラなアドレスだな
2014/05/31(土) 14:38:59.00ID:iRT5FyvM
この糞なdiffのコードはargvがらみ以外にも地雷がたくさんありそう。
argvがらみでも/usr/bin/diffがargv[0]に渡されたらダメなんじゃないか?
4ってmagic numberが糞だから。
>>661
連続してることに依存したコードは糞。
2014/06/01(日) 00:52:00.45ID:MxSjB8Q5
>>662
なぜダメ?ソース見て言ってる?
2014/06/01(日) 00:57:21.10ID:MxSjB8Q5
というか、これぐらいで糞糞って言ってるのは初心者なんだろうな
2014/06/01(日) 02:19:51.86ID:e/SJ8pUJ
>>664
プロはクソでも美味しく調理してみせる ってだけで
クソはクソ、とくにそこに変わりはないだろ
666652
垢版 |
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 () で処理が一行の場合、ブロック {} にせずに書いてある。
・空行が少ない。

などの特徴があります。
2014/06/01(日) 15:42:24.51ID:fiMuA4/7
>>661
そりゃ>>657みたいになるなんてPOSIXの仕様にないもの。
668652
垢版 |
2014/06/01(日) 18:18:52.63ID:uUGuheMf
このdiffに関して、プログラミング技術の秀逸さ以外にソースが
短い理由があるとする666に書いたことに加えて、

・getopt() を使ってオプションの処理が短く出来ている。
・pread() を使って、lseek(), read()に分けずに書けている。
・正規表現ライブラリを使っている。
・fnmatch()なるワイルドカード式のパターンマッチテストを
 使っている。

もあるようです。
669652
垢版 |
2014/06/01(日) 18:20:16.83ID:uUGuheMf
>>662
ああ、あの 4 は、ソース中に固定的に入っている "diff" 文字列に
対応しているので、argv[0] がどんな風に変わっても大丈夫だと
思います。
670652
垢版 |
2014/06/01(日) 18:38:13.52ID:uUGuheMf
さらに:

・goto 文を使っている。
2014/06/03(火) 06:34:30.54ID:mwJyftym
gotoは、finallyの代わりに、エラー処理で使う場合や、
2重ループを一気に抜け出す場合はOK
2014/08/05(火) 09:27:23.16ID:wh+qTY5L
MonoBehaviourの読み方が気になってプログラミングに集中できません
どなたか教えて下さい!
2014/08/05(火) 13:21:49.58ID:AfbB56Nf
モゥノゥ・ビヘイヴュア
674デフォルトの名無しさん
垢版 |
2014/08/05(火) 13:24:41.41ID:AfbB56Nf
英和辞書の発音記号を見ればいいだろう
2014/08/05(火) 13:37:09.15ID:v4Qe9qZY
>>672
今頃気がついたが、
ここはUnixプログラミング質問スレであって
   Unityプログラミング質問スレじゃねぇ!wwww
2014/08/05(火) 17:46:28.53ID:X8aW0ARF
分かりづらいボケだな 嫌いじゃない
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文で存在確認するくらいしかないでしょうか?
2014/08/06(水) 23:31:46.47ID:XlJsEfbX
コマンドライン展開じゃないから
for filepath in ${files}*${a}*
のin句にテキストとして ${files}*${a}* の結果として "/tmp/test/*20140806*"が展開されているだけじゃないの?
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
------------------------------
2014/08/06(水) 23:47:40.87ID:JVlCh9Ly
*は何もマッチしないときはそのまま*になる。

一般的には、確かに、ファイルの存在確認をするとかになるんじゃ。
シェルによっては*の挙動を変えられたはず。
2014/08/07(木) 00:09:15.66ID:mcWZAFW+
>>679
確かに結果としてはできてるけど、
*の振る舞いに違いはないので、 2014086* という名前を探しにいってる。
意図しない物を探しにいっている点で気持ち悪い感じがしないでもない。
682デフォルトの名無しさん
垢版 |
2014/08/07(木) 00:35:24.70ID:WSmP9CNZ
天才のみなさん教えてください。

「fork」した子プロセスで「popen」したのですが、「pclose」で終えると、「errno」に「29(ESPIPE)」が設定されていました。
以降の処理では前出のエラーによる影響は無く、正常に終了しているに見えるのですが、
子プロセスで「popen」は使用するべきではないのでしょうか?

ご教示お願いいたします。
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)はパイプに対して使えないので、
一旦ファイルに書き込んでから、そのファイルに対して使う
2014/08/07(木) 09:06:04.03ID:gf97lcsK
>>682
errnoはエラーしたあとに見るもので、不特定のタイミングで参照して
何か値が入っていたとしても意味はない
pcloseのあとに見たのなら、まずpcloseがエラーしたのか確認すること
685682
垢版 |
2014/08/07(木) 10:21:02.27ID:Nj16SWmn
>>684
pcloseの戻り値は「0」でした。
ということは、問題無しと解釈してよろしいのでしょうか?
子プロセスでpopenを使用することも問題無いのでしょうか?
2014/08/07(木) 11:01:30.95ID:56isn469
>>685
どちらも問題ない
687682
垢版 |
2014/08/07(木) 11:58:56.21ID:Nj16SWmn
>>686
ありがとうございました。
2014/08/07(木) 14:54:41.05ID:FIDAVWXd
恐ろしい罠だった
2014/08/08(金) 00:48:08.28ID:W2uIddTc
正常終了した後に、errnoを見たの?
何じゃそれ!
2014/08/09(土) 11:23:56.87ID:B1dFLZrJ
正常終了したときもerrnoセットしろよ
何のためのE_OKだよ殺すぞクソが

と思ったことはあるのでバカにしたりしない。
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を参照できない
2014/08/12(火) 17:15:08.49ID:hsJ6ic3B
>>690
×バカにしたりしない
○バカにできない
◎俺もバカ
2014/08/13(水) 10:46:20.48ID:03jARyf4
if(result==1)result=errno;
みたいに正規化してから処理るといいよ
2014/08/13(水) 10:49:25.22ID:03jARyf4
マイナス書き忘れた
まあいいや
2014/08/20(水) 06:24:54.38ID:L79Zu2V+
http://jobinjapan.jp/job-listing/keyword-unix.html
697デフォルトの名無しさん
垢版 |
2014/09/01(月) 11:59:31.72ID:5QQ1Caz+
Xlibについて質問します。

ウィンドウ・マネージャを使用する一般的な環境では、ウィンドウの淵をドラッグすると
ConfigureNotifyを受け取ることができます。

ところで、ドラッグの開始と終了を知ることができる通知は受けられますか?

Win32APIで言うところのWM_ENTERSIZEMOVEとWM_EXITSIZEMOVEに相当するものを
探しています。
あるいは何らかの方法で知ることは出来ますか?

よろしくおねがいします。
2014/09/09(火) 23:38:03.45ID:/ZjY2rNK
xlibにdragなんて高級なイベントはないです。
自分でdragと何であるか定義して、そのように自分で書いたコードで解釈してください。
2014/09/10(水) 21:03:14.76ID:zerYkwqt
よく知らんけどDNDを使うらしい
もちろんツールキットならドラッグ&ドロップサポートしてる思うが
700デフォルトの名無しさん
垢版 |
2014/12/23(火) 17:29:19.99ID:BQHHJ9UZ
ところで、viってなんであんなに変態的な操作感なんでしょうか?
2014/12/23(火) 18:48:55.43ID:g0vcdaad
ところで、emacsってなんであんなに変態的な操作感なんでしょうか?
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

勘違いだったのかなぁ。。前はもっと使いにくかった気がしたのですが。
2014/12/23(火) 19:15:34.69ID:1AeA5HA2
>>704
前ってドンだけ前だよwww
4.1BSDの頃?

今時のviってvi名乗ってるけどvimだったりしない?
2014/12/23(火) 19:25:20.96ID:BQHHJ9UZ
>>705
すみません、いちおうvimです
触ってみたのはVIM 7.3です
ちょっと懐かしくなっていろいろいじり始めたのですが、
Windows Tera termのssh経由だと、挙動が違って、insertモードで
カーソルキーが効かなかったり(AとかBとか入力される)
文字が消せなかったり
前経験したイケてない感じに似てます
2014/12/23(火) 22:25:53.16ID:u51zFo5t
>>706 ひょっとすると :set nocompatible でなおったりしませんか(自信ないけど)?
// ノーマルモードに戻ったほうが単語単位とかいろんな動き方ができて結局有利
2014/12/23(火) 22:34:24.66ID:BQHHJ9UZ
>>707
いやぁ、素晴らしいです!
おかげさまで期待通りの動作になりました
このスレの住人さんはさすがっすね
2014/12/23(火) 22:39:03.14ID:BQHHJ9UZ
>>707
すみません、肝心のお礼を言い忘れていました
どうもありがとうございました(ペコリ
2014/12/24(水) 11:12:32.34ID:Mlxryodi
>>708-709 おおそれはなによりです。vimrc 作っとくとそれだけで自動的に nocompatible になるので便利
ハッピークリスマス!
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;
}
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のバグでしょうか?
2015/02/04(水) 09:47:00.99ID:mVJhw09N
仕様ですbyステーブンス
714デフォルトの名無しさん
垢版 |
2015/02/04(水) 11:48:47.58ID:kErMECZ6
杜撰です

に見えた
2015/02/04(水) 13:52:16.28ID:5pZRcUKP
>>712
拝承です
2015/02/07(土) 12:58:19.68ID:quWAAr+b
日立社員乙
2015/03/04(水) 20:53:07.73ID:9LdtcOdt
カレントディレクトリに hoge, text のディレクトリがあって
サブディレクトリも含めて hoge の中にある拡張子 .txt ファイルを text に移動させるシェルスクリプトはどう書くのでしょうか?
2015/03/04(水) 21:51:25.04ID:XBVr1uxu
>>717
find xargs mv
で検索。組み合わせればワンライナーでいける
719717
垢版 |
2015/03/04(水) 23:38:12.92ID:IvKZGLxQ
>>718
できました
ありがとうございました
2015/04/29(水) 20:52:13.95ID:1t7Idot8
Cのソケットって皆さん暗記してますか?
それともマニュアル見ながらですか?
2015/04/29(水) 22:53:40.05ID:NGuLNLKb
>>720
自作スケルトンに全部書いてあるので
マニュアルは最近見てない
2015/04/30(木) 04:30:00.02ID:zG7Mey9s
>>721
ああ、それは楽そうですね
スケルトンというかラッパは作ってあるけど、
自作ライブラリの管理が面倒であまり使ってないや
723片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/06/25(木) 18:04:11.58ID:L8cWAkwK
Linuxプログラミング初心者の片山博文MZです。X11のことですが、
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がインストールできない。。。
2015/07/05(日) 11:15:36.41ID:w9v3Eza+
サポートが切れてた。また、インストールやり直しか。。。
http://www.ubuntulinux.jp/ubuntu
2015/07/12(日) 22:29:58.75ID:KwHbB7ws
X11プログラミング始めました。
2015/07/13(月) 07:57:19.32ID:iSxMMSf8
日記はブログかツイッターで
2015/07/13(月) 08:22:17.26ID:JZVSQPVK
かたやま君って何歳?
もしかして50台?
QZさんと同じ人?
2015/07/13(月) 10:01:58.81ID:eqkpY97O
「体液取引所」は、体液を取引できるサービスです。
ttp://katahiromz.esy.es/taieki/
2015/07/13(月) 10:41:27.79ID:ehCb8x0b
今の時代に生X11のプログラミング?
そんなわけないから新しいフレームワーク作るのかな?
それともネット越しでも使えるってのを前提に何か考えてるのかな?
2015/07/13(月) 11:24:12.72ID:+NoacgtO
21世紀版X11toolkit
http://katahiromz.web.fc2.com/xtk/
2015/07/13(月) 21:21:53.11ID:VD4KavgG
まず最初にXサーバーに接続するためにXOpenDisplayする。最後にXCloseDisplayする。

Display *dpy = XOpenDisplay(NULL);
...
XCloseDisplay(dpy);

DefaultRootWindow(dpy)でルートウィンドウが取得できる。
WindowもPixmapも描画可能なDrawableである。
2015/07/13(月) 21:23:12.79ID:RYeBYa4U
馬鹿か
2015/07/13(月) 22:19:12.31ID:VD4KavgG
標準のXImageは自由すぎて扱いづらい。いちいち確認に時間が掛かりそう
2015/07/13(月) 22:31:16.38ID:VD4KavgG
今、画像処理ライブラリー「imaio」の移植をしようとしている。GTKじゃなくて生のX11じゃないといけないんだ。
2015/07/13(月) 23:29:48.10ID:VD4KavgG
>>732は俺じゃないよ。当たり前だけどね
2015/07/14(火) 16:26:21.63ID:2KYZ+h7+
X11とWin32ではイベント駆動モデルが異なるので、X11アプリをWin32アプリに変換するためには、
その相違点を吸収する必要がある。Win32ではウィンドウプロシージャーがあるが、X11にはない。
739デフォルトの名無しさん
垢版 |
2015/07/14(火) 17:13:59.78ID:zEVZr7+g
変態馬鹿アゲ
2015/07/15(水) 20:18:59.14ID:OqXQaHQl
plain X11の主要なアプリはWin32への移植がほとんど完了している。
xeyes,xlogo,xclock,xcalc,tgif,gnuplot,xdvi,xgraph,xfig,xv,kterm。
Cygwin経由による移植、独自パッチによる移植、1からの作り直しなど。
しかし移植に労力が掛かることから、「アプリの変換」を可能にすることが望ましい。
2015/07/17(金) 18:18:50.94ID:Ifv8D+/7
古いソースは、真っ黒ウィンドウを表示するだけで正しく動かないな。
イベントを正しく処理しないと。
2015/07/17(金) 19:01:57.98ID:Ifv8D+/7
X11は、const付いてないのが当たり前なのか。。。古いシステムだからか
2015/07/17(金) 19:12:57.88ID:8d86NFzu
自分のブログでやれよ
744片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/07/27(月) 21:59:30.83ID:reKlkB8o
X11でカラーピックスマップをマスクする方法を知ってる人は居ませんか?
2015/07/27(月) 22:13:52.80ID:pfFqoABP
いません
2015/07/27(月) 22:55:54.80ID:gBgTtjsa
今N88BASICをUNIXに移植しています
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況